變數包含:全域變量,局部變數
在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中文網其他相關文章!