1.函式宣告
function sum1(n1,n2);
2.函式表示式
var sum2=function(n1,n2);
兩者的區別:解析器會先讀取函式宣告,並使其在執行任何**之前可以訪問;而函式表示式則必須等到解析器執行到它所在的**行才會真正被解釋執行。
考點:function 函式名(){} 和 var 函式名 = function(){}的解析順序的區別
前者是在執行之前就會被解析 後者是在執行過程中
考題:
function functions(flag)
} else
}return getvalue();
}
錯誤原因:對於函式宣告,解析器會率先讀取並且讓其在執行任何**前可用,意思就是別的**還沒執行呢,兩個getvalue宣告已經被讀取,所以賦值會覆蓋。函式表示式,當解析器執行到它所在的**行時,才會真正被解釋執行,所以兩個邏輯分支可以分別執行
if (flag)
} else
}return getvalue();
}
修改原因:函式宣告是做了完全提公升的,這使你在函式宣告前就可以進行函式呼叫。變數宣告是部分提公升,只有宣告會被提公升,賦值(包括函式表示式)操作不會被提公升,因此變數宣告提前,但是賦值不會被覆蓋。1.塊級作用域:{}內是乙個作用域
2.var、let、const的區別
var定義的變數,沒有塊的概念,可以跨塊訪問, 不能跨函式訪問。
let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。
const用來定義常量,使用時必須初始化(即必須賦值),只能在塊作用域裡訪問,而且不能修改。
ES6的塊級作用域
為什麼要使用塊級作用域?1.在預編譯階段,變數的宣告會被提公升到作用域頂部,而初始化操作依舊留在原處執行,在該作用域中未定義變數的地方也能訪問到該變數,但是此時變數尚未初始化,所以其值為undefined,為此es6引入塊級作用域來強化對變數生命週期的控制 塊級宣告 1.塊級作用域用於宣告在指定塊的...
ES6的塊級作用域
let為j ascript新增了塊級作用域,外層作用域無法獲取到內層作用域,這樣非常安全。即使外層和內層都使用相同變數名,也都互不干擾。例如 1 function test 7 console.log a 輸出 18 910 test 呼叫函式 塊級作用域,允許函式可以在塊級作用域中宣告。在塊級作用...
es6 塊級作用域用法
iife 寫法 function 塊級作用域寫法 塊級作用域的出現,實際上使得獲得廣泛應用的立即執行函式表示式 iife 不再必要了。function f function f 上面 在 es5 jscript不支援塊級作用域環境中執行,會得到 i am inside 因為在 if內宣告的函式f會被...