Hot For Coding

JavaScript函数内声明变量几个坑

许多童鞋在写JavaScript的时候,在函数里声明变量对var关键字认识不深刻,这里就函数里声明变量的一点示例。

函数内使用var关键字声明变量

这种情况通常是声明的函数作为局部变量,即函数外不能使用

// Nicholas Lee www.qttc.net

function fun1(){
  // 声明变量,使用var关键字
  var str = 'Nicholas Lee';
  console.log(str); // Output: Nicholas Lee
}
 
fun1();
 
// 函数外使用变量
console.log(str); // Output: Uncaught ReferenceError: str is not defined

函数内不使用var关键字声明变量

这种情况下,即是声明全局变量,整个脚本任何地方都可以使用

// Nicholas Lee www.qttc.net

function fun1(){
  // 声明变量,不使用var关键字
  str = 'Nicholas Lee';
  console.log(str); // Output: Nicholas Lee
}
 
fun1();
 
// 函数外使用变量
console.log(str); // Output: Nicholas Lee

但这种模式只能在非安全模式下,如果代码头部声明use strict脚本就报错了

内外都声明

// Nicholas Lee www.qttc.net

function fun1(str){
  // 函数内定义一个与全局变量同名变量
  var str = str;
  console.log(str); // Output: undefined
}
 
fun1();
 
// 再次使用变量,值未变
console.log(str); // Output: Nicholas Lee

以上属于特别低级的犯错了,因为函数内使用var关键字重新定义变量str导致,因为函数在执行时优先执行var关键字语句,所以导致它的值变为undefined

TITLE: JavaScript函数内声明变量几个坑

LINK: https://www.qttc.net/89_javascript_variable_in_function.html

NOTE: 转载内容请注明出处