? JS作用域与声名提升 - 蓝蓝设计_UI设计公司

追求卓越一諾千金

藍藍設計,2011年成立,主創清華團隊,專注軟件和互聯網ui設計開發。擅長企業信息化管理、監控、大數據軟件UIUE咨詢和設計開發服務。立足UI,好好學習,天天進步!


JS作用域與聲名提升

2019-8-12 釋然 前端及開發文章及欣賞


JS的作用域一共有三個范圍,分別是:

全局作用域
定義在所有函數之外的變量,其作用范圍是在整個腳本中
局部作用域(函數作用域)
使用var定義在函數內部的變量,其作用范圍是整個函數結構,超出函數 {} 花括號的范圍則不能使用。
塊級作用域
ES6聲明變量的方式:let / const
let 變量名 = 變量值;
const 變量名 = 變量值;
PS:注意: 使用const修飾的變量,賦值確定后,不允許再重新賦值。(一般修飾常量或者數組對象之類的)
而且必須給予初始值。
const修飾數組對象后雖然不可以再對變量進行等號賦值了,但是還是可以用數組和對象的方法去改變它的內部結構。
IIFE(立即調用函數表達式 - - 自執行匿名函數):
英文全名:(Immediately Invoked Function Expression)
語法:
//這三種都屬于IIFE寫法
(function () {})();
(function () {}());
+function () {}();
//作用與ES6當中的let是一樣的,只不過用這個語法是為了解決個別瀏覽器的兼容問題。
1
2
3
4
5
聲名提升:
將使用var定義的變量聲名提升到對應作用域的最頂部,賦值部分位置不變。

使用ES6的let與const沒有聲名提升。

函數的定義也存在聲名提升:

如果是聲名的方式定義的函數,將整個函數(聲名及函數主體)都提升到作用域的最頂部。
如果是表達式的方式定義的函數,只提升聲名,不提升賦值(函數主體部分)
示例:

//在聲名函數前面輸出它。輸出的結果就是整個聲名函數的內容
console.log(testArg)
function testArg(a, b, c){
console.log(arguments)
}
1
2
3
4
5
輸出結果:


//在函數表達式之前輸出函數
console.log(testArg)
var testArg = function(a, b, c) {
console.log(arguments)
}
1
2
3
4
5
輸出結果:

這就是聲名提升的特點,只提升聲名部分,不提升賦值部分。大家一定要牢牢記住哦~
————————————————
藍藍設計www.thriveonsite.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計  cs界面設計  ipad界面設計  包裝設計  圖標定制  用戶體驗 、交互設計、 網站建設 平面設計服務。
標簽: JS作用域與聲名提升 « 提升語義分割性能的幾種方法 | ECharts的resize失效原因以及使用方法»


藍藍 http://www.thriveonsite.com

訂閱Rss
2019免费挂机网赚 江苏快3走势图 2019年最新挂机网赚 19年自动挂机网赚 山东群英会怎么玩 千禧彩票注册 2019有什么网赚项目 微信网赚是什么 快3在线投注 9号棋牌APP