(小白)函數一: 聲明函數的方法—語句定義法和表達式定義法的區別

一、函數的定義:

在說明什么是函數前先舉一個小例子:

大家都知道印刷術是我國的四大發明(科普一下:中國四大發明:造紙術、印刷術、火藥、指南針)之一,之所以有印刷術,是因為重復的抄寫既浪費時間,效率又很低,所以印刷術應用而生,印刷術就像一個工具,有了這個工具,我們就不需要再重復的去抄寫一些一模一樣的內容。

今天所說的函數就類似于印刷術,我們在書寫代碼時發現,在實現同一個功能時,所用的代碼幾乎是一樣的,因為實際需要,所以不得不重復的去書寫一樣的代碼,這時我們書寫的代碼看起來很冗雜,會占據內存空間,解析的時間也會很長,所以,為了使我們的代碼書寫的更美觀,我們可以將我們的代碼封裝起來,給它一個命名,放在一個獨立的模塊里,需要使用時拿過來就OK了!

比如說我們在不使用任何循環語句直接想打印5次“hello world!”時,這時我們就需要重復輸出5次“hello world!”,代碼如下:

document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
接下來我們封裝一個函數來打印“hello world!”
function helloworld(){
document.write(('hello world!')+"</br>");
}
helloworld()
helloworld()
helloworld()
helloworld()
helloworld()
很明顯:我們用函數來打印“hello world”,不用再重復的書寫一樣的代碼,只需要使用的時候調用就OK了!

函數的定義:需要反復使用的功能代碼,封裝成一個獨立的模塊,這個模塊就叫函數。

二、聲明函數的方法:

function來定義函數

我們了解了什么是函數后,接著來看一下怎么聲明函數,通俗點說就是怎么使用這個函數:

1.語句定義法:

其實我們在打印“hello world”時使用的方法就是語句定義法

格式:function 函數名(){

? ? ?函數塊;

}

調用:函數名()

2.表達式定義法:

一說表達式,肯定是和賦值有關,我們可以大膽的猜想一下,表達式定義法是不是就是我們將一個函數賦值給了一個變量呢?

看一下它的格式:

var 變量名 = function[函數名](){

? ? 函數塊;

}

調用:變量名()

注意:var后面的是它聲明的這個變量的變量名,不是函數名,函數名還是在function后面,之所以將函數名寫在[]中,是因為在表達式定義法中,函數名是可以省略的,通常情況下,函數名我們也都是省略不寫的。

語句定義法和表達式定義法在以后的使用中,語句定義法會更常用。

為什么說語句定義法更常用呢,這就要說一下語句定義法和表達式定義法的區別了:

3、語句定義法和表達式定義法的區別:

語句定義法會提升函數,會在執行代碼前讀取函數聲明,通俗講就是我們可以在任何位置調用這個函數;

//person() 函數前調用     //張三
function person(){
var name = "張三";
alert(name);
}
person() //函數后調用    //張三

表達式定義法不會提升函數,必須先聲明函數,再調用;

//person(); 報錯:控制臺輸出person is not a function
var person = function(){
var name = "張三";
alert(name);
}
person(); //張三

轉載于:https://www.cnblogs.com/kinoko-1009/p/10272047.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395444.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android限制輸入字符的范圍,Android EditText 對輸入字數和內容范圍進行限制

在做定制機時&#xff0c;對光敏值進行范圍控制時&#xff0c;以及對區號輸入時遇到對輸入字數以及輸入內容的顯示。找了好多方法&#xff0c;終于找到了幾種方法其中EditText的addTextChangedListener功不可沒。例如對光敏值要在0到61之間。大于61時要在輸入框中自動變為61.代…

vue13過濾器 debounce延遲、limitBy、filterBy、orderBy

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>智能社——http://www.zhinengshe.com</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum…

Sass:一種CSS預處理器語言

http://sass-lang.com/ Sass是一種CSS預處理器語言&#xff0c;通過編程方式生成CSS代碼。因為可編程&#xff0c;所以操控靈活性自由度高&#xff0c;方便實現一些直接編寫CSS代碼較困難的代碼。 同時&#xff0c;因為Sass是生成CSS的語言&#xff0c;所以寫出來的Sass文件是不…

Python學習(五)列表的簡單操作

#!/usr/bin/env python#_*_coding:utf8_*_# 操作列表# for循環nbaStars [yaoming,kobe,manu,23,the klaw]for nbaStar in nbaStars: print(nbaStar)nbaStars [yaoming,kobe,manu,str(23),the klaw] # 這里有 int 對象&#xff0c;沒有title方法的for nbaStar in nbaStars:…

node seneca_使用Node.js和Seneca編寫國際象棋微服務,第3部分

node senecaFinishing up a three-part series on writing a rules engine with Seneca microservices.完成有關使用Seneca微服務編寫規則引擎的三部分系列文章。 Parts 1 & 2 of this series covered:本系列的第1部分和第2部分涉及&#xff1a; The Seneca microservice…

Android開發畫布銷毀,Android DialogFragment 在頁面銷毀下的使用方式

今天看到了一篇文章,講了DialogFragment的封裝方式(Android&#xff1a;我為何要封裝DialogFragment&#xff1f;),想到當初也為頁面銷毀后DialogFragment的回調方式頭疼了好久,看到了po主的思路,與當初自己想的不太一樣,就整理一下.如何在開發中遇到頁面銷毀的情況在android開…

視覺智能產品發布 阿里云這項世界第一的技術現在人人可用

用手機拍下朋友的相片&#xff0c;軟件會自動識別進行分類并將照片發送給朋友。這不是空想&#xff0c;利用視覺智能對手機相冊進行管理、分類和分享正逐步成為現實。在6月10日舉行的云棲大會上海峰會上&#xff0c;阿里云正式發布了“圖像識別”和“人臉識別”兩款視覺智能服務…

ViewPager中Fragment的重復創建、復用問題

在ViewPager中的Fragment的生命周期 隨著頁面的切換 當前的展示頁相鄰的頁面生命周期一直在變化 一開始 剛進入Activity時候&#xff0c;ViewPager默認初始化好前兩個Fragment&#xff08;消息和任務&#xff09; 消息 ->任務 05-09 14:47:39.593 31509-31509/tyh.com.tabl…

使用VB.net建立excel文件

Add the following code snippet on top of Form1.vb Imports Excel Microsoft.Office.Interop.Excel Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim appXL As Excel.Application 聲明一個application對象Dim wbX…

沙盤演練工作坊-產品開發_Google認證的Android助理開發人員:考試演練

沙盤演練工作坊-產品開發by Rohan Taneja由Rohan Taneja Google認證的Android助理開發人員&#xff1a;考試演練 (Google Certified Associate Android Developer: Exam Walkthrough) UPDATE (24th July, 2018)更新(2018年7月24日) The certification exam is available agai…

linux hlist,linux內核V2.6.11學習筆記(2)--list和hlist

這兩個數據結構在內核中隨處可見,不得不拿出來單獨講講.這兩個數據結構都是為了方便內核開發者在使用到類似數據結構的時候不必自行開發(雖然不難),因此它們需要做到足夠的"通用性",也就是說,今天可以用它們做一個存放進程的鏈表,明天同樣可以做一個封裝定時器的鏈表…

14-angular.isDefined

判斷括號內的值是否存在。 格式&#xff1a; angular.isDefined(value); value: 被判斷是否存在的值。 返回值&#xff1a; true/false轉載于:https://www.cnblogs.com/ms-grf/p/6978886.html

實施工程師1分鐘即時演講_我是如何在1年內從時裝模特轉變為軟件工程師的

實施工程師1分鐘即時演講In 2015 I knew almost nothing about coding. Today, I’m a software engineer and a teacher at a code school for kids.在2015年&#xff0c;我對編碼幾乎一無所知。 今天&#xff0c;我是一名軟件工程師&#xff0c;還是一所代碼學校的兒童老師。…

MSSQL分組取后每一組的最新一條記錄

數據庫中二張表&#xff0c;用戶表和獎金記錄表&#xff0c;獎金記錄表中一個用戶有多條信息&#xff0c;有一個生效時間&#xff0c;現在要查詢&#xff1a; 獎金生效時間在三天前&#xff0c;每個用戶取最新一條獎金記錄&#xff0c;且用戶末鎖定 以前用的方法是直接寫在C#代…

android模擬器插件,Android模擬器插件找不到android SDK

首先&#xff0c;克隆項目詹金斯一直輸出后&#xff1a;[android] No Android SDK found; lets install it automatically...[android] Going to install required Android SDK components...[android] Installing the platform-tool,tool SDK component(s)...$ /var/lib/jenki…

讀書筆記--模板與泛型編程

了解隱式接口和編譯期多態 編譯期多態和運行期多態 運行期多態就好比是virtual函數再運行的時候才確定該virtual函數該被綁定為哪個函數&#xff0c;運行的時候才確定函數類型。  編譯期多態就好比是泛型編程和模板編程中&#xff0c;在編譯的時候才確定哪個函數該被調用&…

棧和遞歸的關系 144:Binary Tree Preorder Traversal

前序遍歷&#xff1a;根左右 //用棧來實現非遞歸解法/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vec…

運行級別

ls -l /usr/lib/system/runlevel*target &#xff08;查看運行級別&#xff09;Linux系統有7個運行級別(runlevel)運行級別0&#xff1a;系統停機狀態&#xff0c;系統默認運行級別不能設為0&#xff0c;否則不能正常啟動運行級別1&#xff1a;單用戶工作狀態&#xff0c;roo…

微信sdk swift版_使用Swift 4的iOS版Google Maps SDK終極指南

微信sdk swift版by Dejan Atanasov通過Dejan Atanasov 使用Swift 4的iOS版Google Maps SDK終極指南 (Your ultimate guide to the Google Maps SDK on iOS, using Swift 4) Many iOS apps use Google Maps. This is a very common feature, so I have decided to prepare an u…

精確覆蓋DLX算法模板

代碼 struct DLX {int n,id;int L[maxn],R[maxn],U[maxn],D[maxn];int C[maxn],S[maxn],loc[maxn][2];void init(int nn0) //傳列長{nnn;for(int i0;i<n;i) U[i]D[i]i,L[i]i-1,R[i]i1;L[0]n; R[n]0;idn;memset(S,0,sizeof(S));}void AddRow(int x,int col,int A[]) //傳入參…