ES5中js的作用域和變量提升

ES5中js的作用域和變量提升

ES5 中JS 的作用域:

在ES5 中,JS 只有兩種形式的作用域:全局作用域和函數(shù)作用域。

全局作用域

全局對象的作用域,任何地方都可以訪問到(如果沒有被函數(shù)作用域覆蓋)。

函數(shù)作用域

整個函數(shù)的范圍內(nèi)可訪問。

變量提升:

ES5 中存在變量提升,ES6 中并不存在變量提升。因此下面的內(nèi)容只針對ES5。

ES5 中變量聲明會提升到它所在 作用域的頂端 去執(zhí)行。

以下兩段示例代碼是一樣的結(jié)果:
代碼1:

a = 5; // 變量 a 設(shè)置值為 5
console.log(a);
var a; // 聲明 a

代碼2:

var b; // 聲明 b
b = 5; // 變量 b 設(shè)置值為 5
console.log(b);

函數(shù)聲明和變量聲明總是會被解釋器悄悄地被"提升"到方法體的最頂部。
但是需要注意的是:被初始化的變量不會提升
以下兩段示例代碼是不一樣的結(jié)果:
代碼1:

var x = 5; // 初始化 x
console.log(x + y);//12
var y = 7; // 初始化 y

代碼2:

var x = 5; // 初始化 x
console.log(x + y);//NaN
var y = 7; // 初始化 y

擴展:

console.log(v1);
var v1 = 100;
function foo() {
    console.log(v1);
    var v1 = 200;
    console.log(v1);
}
foo();

console.log(v1);

打印結(jié)果為:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡介 ECMAScript是JavaScript的標(biāo)準(zhǔn),JavaScript實現(xiàn)了ECMAScript,ECMAS...
    Zindex閱讀 578評論 0 1
  • 原本想稍微整理一下 ES 新特性,沒想到花了相當(dāng)多的時間,本文也巨長,依然推薦使用 簡悅[https://gith...
    401閱讀 2,016評論 0 5
  • html 1.1 html標(biāo)簽的類型(head, body,!Doctype) 他們的作用是什么 參考答案: !D...
    _Y_X_閱讀 642評論 0 1
  • http://www.itdecent.cn/p/769266edbd38 前言 經(jīng)過艱苦卓絕的面試歷程,終于拿...
    Clover園閱讀 244評論 0 0
  • 一、作用域 JavaScript中最為重要的?個概念:執(zhí)?環(huán)境(作用域),定義了變量或函數(shù)有權(quán)訪問的其他數(shù)據(jù),決...
    慜溢學(xué)閱讀 260評論 0 0

友情鏈接更多精彩內(nèi)容