那些容易忽略的事3 (變數提公升和函式提公升)

2022-09-20 01:09:12 字數 881 閱讀 8740

1、變數提公升:只要變數在**中進行了宣告,無論它在哪個位置上進行宣告, js引擎都會將它的宣告放在範圍作用域的頂部;

console.log(a); //

undefined

vara;

2、函式提公升:只要函式在**中進行了宣告,無論它在哪個位置上進行宣告, js引擎都會將它的宣告放在範圍作用域的頂部;

console.log(b); //

function b(){}

function b(){};

從上可以看出,變數或函式宣告都會別放到當前作用域的頂部,那麼問題來了:如果變數和函式重名那麼熟輕熟重呢?誰的優先等級更高呢?

var

a;function

a(){};

console.log(a);

//function a(){}

function

b(){};

varb;

console.log(b);

//function b(){}

var c=1;

function

c(){}

console.log(c); //1

function

d(){};

var d=1;

console.log(d);

//1

總結:變數申明和函式申明重名時,

不管二者宣告的順序,函式宣告會覆蓋變數宣告,也就是說,此時a的值是宣告的函式function a() {}。

注意:如果在變數宣告的同時初始化a,或是之後對a進行賦值,此時a的值是變數的值。

也就是說:a===undefined ? a===函式 :a===變數

那些容易忽略的事 1 變數與運算子

1 變數 作為變數 alert x referenceerror x is not defined typeof x undefined vary alert y undefined typeof y undefined 作為屬性 alert window.x undefined typeof wi...

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

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

關於JS那些容易被你忽略的那些點(3)

不知道你前面的理解的怎麼樣了。現在你來判斷下下面 的輸出 for var i 0 i 5 i 很眼熟對不對,沒錯,稍微改下就能完成想要實現的功能了 for var i 0 i 5 i i 你自己再控制台可以試一試,看是不是實現功能了 那麼再來判斷下下面這段 var arr1 john split j...