许多童鞋在写JavaScript的时候,在函数里声明变量对var
关键字认识不深刻,这里就函数里声明变量的一点示例。
函数内使用var关键字声明变量
这种情况通常是声明的函数作为局部变量,即函数外不能使用
// 琼台博客 www.qttc.net
function fun1(){
// 声明变量,使用var关键字
var str = '琼台博客';
console.log(str); // Output: 琼台博客
}
fun1();
// 函数外使用变量
console.log(str); // Output: Uncaught ReferenceError: str is not defined
函数内不使用var关键字声明变量
这种情况下,即是声明全局变量,整个脚本任何地方都可以使用
// 琼台博客 www.qttc.net
function fun1(){
// 声明变量,不使用var关键字
str = '琼台博客';
console.log(str); // Output: 琼台博客
}
fun1();
// 函数外使用变量
console.log(str); // Output: 琼台博客
但这种模式只能在非安全模式下,如果代码头部声明use strict
脚本就报错了
内外都声明
// 琼台博客 www.qttc.net
function fun1(str){
// 函数内定义一个与全局变量同名变量
var str = str;
console.log(str); // Output: undefined
}
fun1();
// 再次使用变量,值未变
console.log(str); // Output: 琼台博客
以上属于特别低级的犯错了,因为函数内使用var
关键字重新定义变量str
导致,因为函数在执行时优先执行var
关键字语句,所以导致它的值变为undefined