国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺談js的解析順序 作用域 嚴格模式

2024-05-06 15:25:20
字體:
來源:轉載
供稿:網友

一、javascript的解析順序

我們大家所理解的代碼的執行順序都是從上到下的,但是實際上確不是這樣的。我們看一下下面的代碼。

alert(a);var a = 1;

如果執行順序是從上到下的,在上面彈出一個a,瀏覽器會認為從上到下執行的,那么當它alert(a)的時候,他就會發現沒有這個東西,那么他就會報錯,但是實際上他彈出來的結果是undefined。返回值是undefined說明a沒有被定義也就是沒有賦值。下面我來講解一下javascript的解析順序。

1.ES5中有聲明意義的關鍵字

var 會存在變量提升

function也有聲明變量的的作用。

2.解析順序

1.找聲明 var、function 聲明:只是聲明變量,而不包括賦值。

2. 執行

注意:以上兩步 都遵循從上至下,執行的時候遇到等號,先看等號的右邊。

注意:當function聲明的變量和var聲明的變量重名時,function的變量權重會比var聲明的要高。

下面多來幾個例子解析一下就清楚許多了,但是看例子之前要知道一下什么叫作用域。

二、作用域

作用域就是:起作用的范圍分為下面兩種

1.全局作用域

2.函數作用域

他們兩個的區別看下面的例子仔細分析。

三、看幾個例子解析一下執行順序的步驟

1. 第一個例子:

var x = 5; a(); function a(){  alert(x);  var x = 10; }alert(x);

解析過程

1,.尋找聲明 (看全局作用域)

var x;function a(){}

2.執行

x = 5;

a() ------------->執行到這個函數的過程中在重新進行以上兩步

1,尋找聲明 var x;(函數作用域)

2. 執行

alert(x); 這個x在函數作用域中存在,并且還沒有執行到賦值的那一步,那么彈出的東西就是undefined;

x = 10;

alert(x) 這里彈窗是全局變量 5;

所以瀏覽器彈窗的內容是 undefined 5

2. 第二個例子

 a() function a(){  alert(x);  var x = 10; }alert(x);

解析過程 按照上面的例子一樣分析

1. 尋找聲明

 function a(){}

2.執行

 a()------------------------->函數

1.尋找聲明

var x;

2.執行

alert(x) 彈出未定義

x = 10;

alert(x); 這里的x會從全局中尋找x,但是發現并沒有x,所 以瀏覽器會 報錯 x is not defined x沒有被定義

所以瀏覽器的彈出的內容是 undefined 報錯

 

我相信看了這兩個例子的人都對這個解析過程都有了清除的了解,如果還是不太了解,建議重新看一次。

下面介紹幾個需要注意的地方, 直接上例子

3. 第三個例子

前面講到了當function聲明的變量和var聲明的變量重名時,function的變量權重會比var聲明的要高。來一個例子證明一下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 清流县| 普洱| 格尔木市| 武川县| 新和县| 巴里| 威远县| 商丘市| 武冈市| 林州市| 阿拉尔市| 磐石市| 五大连池市| 庄浪县| 台中市| 彭阳县| 田林县| 长海县| 汉阴县| 潢川县| 前郭尔| 邵阳县| 绥江县| 文水县| 象州县| 洞口县| 徐闻县| 黔西| 卢湾区| 耿马| 江阴市| 伊宁县| 乳源| 庆云县| 抚远县| 泗洪县| 仪陇县| 安岳县| 策勒县| 佛坪县| 富平县|