1、
console.log(x === undefined); // true
var x = 3;
解释:
var x;
console.log(x === undefined); // true
x = 3;
2、
// will return a value of undefined
var myvar = 'my value';
(function() {
console.log(myvar); // undefined
var myvar = 'local value';
})();
解释:
var myvar = 'my value';
(function() {
var myvar;
console.log(myvar); // undefined
myvar = 'local value';
})();
3、
function foo() {
console.log(x); // undefined
var x = 12;
console.log(x); // 12
}
foo();
解释:
function foo() {
var x;
console.log(x); // undefined
x = 12;
console.log(x); // 12
}
foo();
4、
var x = 123;
function foo() {
console.log(x); // undefined
var x = 12;
console.log(x); // 12
}
foo();
console.log(x); // 123,这里之所以结果为123,是因为在函数内声明的变量x虽然与函数外同名,但由于是在函数内且用关键字var来声明的,所以函数内的x只是一个局部变量,函数外无法访问到
5、在函数内变量声明前使用return关键字
function too() {
console.log(y + "*"); // undefined*
y = 10;
console.log(y + "**"); // 10**
return; // 函数内return后的语句不会执行
console.log(y + "***");
var y = 2;
console.log(y + "****");
}
too();
解释:
function too() {
var y;
console.log(y + "*"); // undefined*
y = 10;
console.log(y + "**"); // 10**
}
too();
6、for语句内声明变量
for(var i = 0;i < 5; i++){}
console.log(i) // 5
7、if语句内声明变量
if(100){
var x = 30;
}
console.log(x); // 30
8、在if语句内声明一个与外部同名的变量
var x = 123;
if (100) {
var x = 30;
}
console.log(x); // 30
var x = 123;
if (0) {
var x = 30;
}
console.log(x); // 123
More
MDN Variable hoisting
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_hoisting
JavaScript变量声明与提升
https://www.cnblogs.com/jf-67/p/8034957.html