1.變量域
js中只有函數作用域(local scope)和全局作用域(global scope),沒有塊級作用域
2.變量提升
對於val定義的變量和function a(){} ,存在變量提升。
注意:函數表達式不存在變量提升。
實例1:
(function() {
console.log(testc); //打印出undefined
testa(); // 打印出testa testb(); // 報錯:提示undefined is not a function function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";})(); 實例二:
var a = 1;
function b() {
console.log(a); //function a(){}
a = 10;
console.log(a); //10,此時函數作用域中定義了變量a。
return;
function a() { //變量提升到最前面,相當於var a=function(){}
}
}
b();
console.log(a); // 1 ,訪問的是全局變量
實例三:
var a = 1;
function b() {
console.log(a); //1,此時a爲全局變量
a = 10;
console.log(a); //10,改變了全局變量的值
return;
function c() {
}
}
b();
console.log(a); //10
歡迎指正!