1、變數提公升:只要變數在**中進行了宣告,無論它在哪個位置上進行宣告, js引擎都會將它的宣告放在範圍作用域的頂部;
console.log(a); //undefined
vara;
2、函式提公升:只要函式在**中進行了宣告,無論它在哪個位置上進行宣告, js引擎都會將它的宣告放在範圍作用域的頂部;
console.log(b); //function b(){}
function b(){};
從上可以看出,變數或函式宣告都會別放到當前作用域的頂部,那麼問題來了:如果變數和函式重名那麼熟輕熟重呢?誰的優先等級更高呢?
vara;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...