2019-8-12 seo達(dá)人
JS的作用域一共有三個(gè)范圍,分別是:
全局作用域
定義在所有函數(shù)之外的變量,其作用范圍是在整個(gè)腳本中
局部作用域(函數(shù)作用域)
使用var定義在函數(shù)內(nèi)部的變量,其作用范圍是整個(gè)函數(shù)結(jié)構(gòu),超出函數(shù) {} 花括號(hào)的范圍則不能使用。
塊級(jí)作用域
ES6聲明變量的方式:let / const
let 變量名 = 變量值;
const 變量名 = 變量值;
PS:注意: 使用const修飾的變量,賦值確定后,不允許再重新賦值。(一般修飾常量或者數(shù)組對(duì)象之類(lèi)的)
而且必須給予初始值。
const修飾數(shù)組對(duì)象后雖然不可以再對(duì)變量進(jìn)行等號(hào)賦值了,但是還是可以用數(shù)組和對(duì)象的方法去改變它的內(nèi)部結(jié)構(gòu)。
IIFE(立即調(diào)用函數(shù)表達(dá)式 - - 自執(zhí)行匿名函數(shù)):
英文全名:(Immediately Invoked Function Expression)
語(yǔ)法:
//這三種都屬于IIFE寫(xiě)法
(function () {})();
(function () {}());
+function () {}();
//作用與ES6當(dāng)中的let是一樣的,只不過(guò)用這個(gè)語(yǔ)法是為了解決個(gè)別瀏覽器的兼容問(wèn)題。
1
2
3
4
5
聲名提升:
將使用var定義的變量聲名提升到對(duì)應(yīng)作用域的最頂部,賦值部分位置不變。
使用ES6的let與const沒(méi)有聲名提升。
函數(shù)的定義也存在聲名提升:
如果是聲名的方式定義的函數(shù),將整個(gè)函數(shù)(聲名及函數(shù)主體)都提升到作用域的最頂部。
如果是表達(dá)式的方式定義的函數(shù),只提升聲名,不提升賦值(函數(shù)主體部分)
示例:
//在聲名函數(shù)前面輸出它。輸出的結(jié)果就是整個(gè)聲名函數(shù)的內(nèi)容
console.log(testArg)
function testArg(a, b, c){
console.log(arguments)
}
1
2
3
4
5
輸出結(jié)果:
//在函數(shù)表達(dá)式之前輸出函數(shù)
console.log(testArg)
var testArg = function(a, b, c) {
console.log(arguments)
}
1
2
3
4
5
輸出結(jié)果:
這就是聲名提升的特點(diǎn),只提升聲名部分,不提升賦值部分。大家一定要牢牢記住哦~
————————————————
藍(lán)藍(lán)設(shè)計(jì)( tweetduck.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
藍(lán)藍(lán)設(shè)計(jì)的小編 http://tweetduck.com