一:js解析機制
遇到 script 標籤的話 js 就進行預解析,將變數 var 和 function 宣告提公升,但不會執行 function,然後就進入上下文執行,上下文執行還是執行預解析同樣操作,直到沒有 var 和 function,就開始執行上下文。
二:宣告提公升
函式宣告和變數宣告總是會被直譯器悄悄地被"提公升"到方法體的最頂部。
三:函式宣告提公升
a=5注意:; show
();
vara;
function
show
(){};
預解析:
function
show
(){};
// 函式的宣告
vara;
// 變數的宣告 a
=5;
show
();
需要注意都是
函式宣告
提公升直接把整個函式提到
執行環境的最頂端。
除了以上的函式宣告方式外,還可以使用匿名函式的方式。使用匿名函式的方式不存在函式提公升
,因為函式名稱使用變數表示的,只存在變數提公升
。
var預解析:getname
=function()
function
getname()
getname
();// 2
//函式、變數宣告提公升後四:變數宣告提公升:function
getname()
vargetname
;//變數宣告提公升
getname
=function()
getname
();// 最終輸出:2
x=5;
elem=document.getelementbyid("demo");
elem.innerhtml=x; // 使用後宣告
var x;
// 預解析:
var x;
x=5;
elem=document.getelementbyid("demo");
elem.innerhtml=x;
var a=7;
console.log("++++++++++a",a)
console.log("++++++++++b",b) // undefined;因為只是 變數宣告提公升,初始化沒有提公升
var b=7;
// 預解析:
var a=7;
var b;
console.log("++++++++++a",a)
console.log("++++++++++b",b) // undefined(宣告無初始化);因為只是 變數宣告提公升,初始化沒有提公升
b=7;
JS變數宣告提公升
js的變數作用域是離它最近的封閉語塊或 塊,包含他們內部的函式.在 塊中宣告會被隱式的提公升到封閉函式的頂部 1 function 6 var y 1 7 上面的 會被js解釋成下面的格式 1 function 8 有時候我們會不小心的在函式內部重新宣告了已有的變數 function text x ...
JS變數宣告和函式宣告提公升
很多時候,在直覺上,我們都會認為js 在執行時都是自上而下一行一行執行的,但是實際上,有一種情況會導致這個假設是錯誤的。a 2 var a console.log a 按照傳統眼光,console.log a 輸出的應該是undefined,因為var a在a 2之後。但是,輸出的是2。再看第二段 ...
JS函式和宣告提公升
目錄語法 function 函式名 形參1,形參2,匿名函式 var f1 function 形參1,形參2,f1 1,2 立即執行函式 function a,b 1,2 在函式體內通過arguments物件來訪問引數陣列,從而獲取傳給函式的每個引數。可以通過索引取到引數。function add ...