變數包含:全域變量,局部變數
在JAvaScript中,函數中定義的變數是局部變數
分為:局部作用域與全域作用域
js中沒有區塊級作用域# ---一對括號中定義的變數,這個變數可以在大括號外面使用
var num=10; //作用域链 级别:0 var num2=20; var str = "abc" function f1() { var num2=20; function f2() { var num3=30; console.log(num); } f2(); } f1();
層層搜尋,搜尋到0級作用域的時候,如果還是沒有找到這個變數,結果就是報錯
(1)變數的提升
#下面這種情況,變數的宣告被提前了,但是num的值並沒有提前,結果為undefined
//变量的提升 console.log(num); var num=100; //提升之后为: var num;//变量的声明提前 console.log(num); var num=100;
(2)
函數聲明被提前,程式碼仍然可以執行
//函数的声明被提前了 f1(); function f1() { console.log("这个函数,执行了"); }
但對於下面這種情況,程式碼報錯
f2(); var f2=function () { console.log("小杨好帅哦"); } //声明提前后: var f2;//为一个变量,undefind f2();//undefind加括号是不被认可的,所以报错 var f2=function () { console.log("小杨好帅哦"); }
要想不報錯,程式碼可以改為:
var f2; f2=function () { console.log("小杨好帅哦"); }; f2();
相關文章:
相關影片:
以上是JavaScript—詳細介紹作用域,作用域鍊與預解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!