web小白初學js筆記(變數和函式提公升)

2021-10-23 16:24:17 字數 1183 閱讀 8722

我只是乙個初學web的小白,寫下這篇部落格也只是為了加深自己的理解,如有錯誤希望各位能不吝賜教。

首先說明一下js執行的兩個階段(js引擎)

1.預編譯階段

2.執行階段

變數和函式提公升就發生在預編譯階段

變數提公升就是在函式內,將區域性變數的宣告提到最上方,但是賦值依舊在原來的位置,如下

// console.log(n);

// var n = 10;

// 變數提公升後的樣式

// var n;

// console.log(n);

// n = 10;

這種提公升後的樣式並不會出現在**中,也就是js會在暗中將**轉換成這種格式,類似於隱式轉換。這也是為什麼區域性變數的宣告寫在最後但函式依然可用的原因。

// 變數提公升經典面試題

// console.log(v1); // undefined

// var v1 = 100;

// function foo()

// foo();

// console.log(v1); // 100

函式提公升與變數提公升類似,是將函式提公升到**的最上端

function

add(

)add()

;add

=function()

// 列印結果是666

但要注意一點,當函式提公升和變數提公升並存時,函式提公升為大。如**所示

console.

log(a)

;functiona(

)var a =10;

console.

log(a);a

();// 解析

functiona(

)var a;

// 此時已經失效

console.

log(a)

// 列印結果為function a()

a =10;

console.

log(a)

// 列印結果為 10a(

)// 會報錯,因為a此時已經是10而非函式名了

變數與函式提公升是由js自行完成的,不需要額外注意,但最好還是按照標準格式敲寫**,以免發生bug。此外,這也是面試時常考的問題

JS 變數提公升 函式名提公升 變數和函式結合的提公升

一 變數的提公升 1 使用var 關鍵字宣告的變數會提公升到 的頭部 變數提公升 例子 console.log num undefined var num 100 console.log num 100 var x console.log x undefined 2 不使用var關鍵字宣告的變數是全...

深入理解JS中的函式宣告提公升和變數宣告提公升

簡介 本文先從函式的宣告方式說起,介紹不同函式的宣告方式在函式宣告提公升上的不同。然後根據具體的例子比較變數宣告提公升和函式宣告提公升的不同。第一部分 函式的宣告方式 函式宣告有三種方式 函式宣告,函式表示式 又稱函式字面量宣告 函式物件的宣告 使用率很低 方式一 函式宣告 function 函式名...

JS函式提公升和變數提公升

js引擎在執行整個js 的過程中,分為倆步。第一步是讀取和解析js 第二部是執行。在引擎解析js 的時候,當解析器遇見變數宣告 var 變數名 和函式宣告 function 函式名 的時候,會將這些宣告提到各自作用域的最前面。在es6之前,js是沒有塊級作用域的。只有2種作用域 注 在其他語言中,被...