JavaScript中undefined和is not defined异常
不解释,直接看代码
<script type="text/javascript">
function f() {
console.log(userName); //undefined
//局部变量(在函数内,使用var关键字声明的变量是局部变量)
var userName = '陈宇寒'; //userName是局部变量
}
f();
// var str2 = "于都县";
//上面那一行代码注释掉就会报错str2 is not defined,上面那一行代码不注释掉就会打印于都县
// console.log(str2);
console.log(str1); //undefined
//变量提升/变量前置(变量的声明会自动前置,变量的赋值还是留在原来的位置上)
var str1 = "赣南脐橙";
function t1() {
// console.log("-----" + str2); //str2 is not defined
//全局变量(在函数内,没有使用var关键字声明的变量是全局变量)
str2 = '江西赣州于都县'; //str2是全局变量
console.log("#####" + str2); //#####江西赣州于都县
console.log("!!!!!" + window.str2); //!!!!!江西赣州于都县
}
t1();
console.log("*****" + str2); //*****江西赣州于都县
console.log("=====" + window.str2); //=====江西赣州于都县
function hi() {
//在函数内,凡是没有使用var关键字声明的变量,最终都会成为全局对象window的属性
money = 666; //在函数内,凡是没有使用var关键字声明的变量,该变量最终都会成为全局变量
console.log(money); //666
console.log(window.money); //666
}
hi();
console.log(money); //666
console.log(window.money); //666
</script>
运行结果如下:
以后有时间我再详细的讲讲JavaScript中的变量提升/变量前置。