函式的定義以及變數的作用域

2021-10-11 14:41:06 字數 1761 閱讀 2080

函式是一種封裝,封裝的目的是為了復用,封裝完畢之後,可以在任意地方,呼叫任意多次。

function 函式名()
函式不會自動執行,需要呼叫才可以執行(函式的定義順序與呼叫順序無關

函式名();

1.函式的常見用途:

2.函式的引數

形參:函式定義時的引數

實參:函式呼叫時的引數

理論上函式可以有無限多個引數,多個引數之間使用逗號分隔。

函式的引數是按照順序傳遞的

3.arguments

每乙個函式都有arguments屬性

arguments是乙個集合

arguments中儲存的是接收的引數(實參)

//用函式實現求數字多和

function

getsum()

console.

log(sum);}

getsum(10

,20,30

,40);

getsum(10

,20);

getsum(10

,20,100

);

4.函式的定義方式:

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 用來支援...