函式是一種封裝,封裝的目的是為了復用,封裝完畢之後,可以在任意地方,呼叫任意多次。
function 函式名()
函式不會自動執行,需要呼叫才可以執行(函式的定義順序與呼叫順序無關
函式名();
1.函式的常見用途:
2.函式的引數
形參:函式定義時的引數
實參:函式呼叫時的引數
理論上函式可以有無限多個引數,多個引數之間使用逗號分隔。
函式的引數是按照順序傳遞的
3.arguments
每乙個函式都有arguments屬性
arguments是乙個集合
arguments中儲存的是接收的引數(實參)
4.函式的定義方式://用函式實現求數字多和
function
getsum()
console.
log(sum);}
getsum(10
,20,30
,40);
getsum(10
,20);
getsum(10
,20,100
);
1)function關鍵字 宣告
function 函式名(){}
2)通過變數定義
var fn=function(){};
兩種函式的定義方區別:
通過function來定義的函式,可以在任意位置呼叫
通過變數定義的函式,只能在定義之後使用,不能再定義之前呼叫函式(**順序問題)
注意:若函式出現了重名情況(既是引數個數不一致),則會出現覆蓋現象(後定義的覆蓋先定義的)
變數的作用域,指變數生效的範圍functionfn(
)function
fn(a)fn(
);//undefinedfn(
'哈哈哈');
//哈哈哈
根據變數的作用域不同,可以將變數分為兩種:
1.全域性變數
全域性變數在整個文件中都有效(都可以被訪問到)
宣告再函式外的變數都是全域性變數
2.區域性變數
宣告再函式內的變數(包含形參位置),是區域性變數
注意:
作用域鏈:var a =10;
//全域性變數
function
show()
show()
;
一般情況下,變數取值到 建立 這個變數 的函式的作用域中取值。但是如果在當前作用域中沒有查到值,就會向上級作用域去查,直到查到全域性作用域,這麼乙個查詢過程形成的鏈條就叫做作用域鏈
推薦多使用區域性變數
全域性變數的生命週期較長,不利於快速釋放記憶體
3.預解析(變數提公升)
瀏覽器在執行js**的時候,有乙個預解析的動作。js的執行可以分為兩步:
在預解析的過程中,變數沒有被賦值,這個時候,變數的值為undefined。函式也沒有被執行,函式只有被呼叫的時候才會執行
變數提公升以及作用域
1 console.log v1 2var v1 100 3function foo 8foo 9console.log v1 10 undefined undefined 200 100 一共有四次列印的動作,分別來看 第一次列印,由於存在變數提公升,第二句中的var v1 100會被提到頂部進行...
函式中變數的作用域
今天用函式的時候遇到了乙個問題,後來總結了下 函式中若對變數進行了初始化,則該變數為區域性變數 若沒有初始化而直接對該變數操作,則該變數為全域性變數。一般這種情況出現在列表和字典的使用中。如 a 1 b 1 list dict def ch1 b a 1 def ch3 dict x 1 ch1 c...
Python函式引數傳遞以及變數作用域
使用 號,表示函式接受多個引數 def f args print args f 1 1,f 1,2,3 1,2,3 f f 1,2 1,2 使用 號,表示傳遞的是字典引數 def f1 args print args f1 a 1,b 2 3.將函式名作為引數傳遞 coding utf 8 用來支援...