JS变量的声明

   var x=1;   测试();      功能测试(){   console.log (x)//1   }      功能测试(){   console.log (x)//定义   var x=10;   }      功能测试(){   console.log (x)//1   x=10;   console.log (x)//10   }

执行到测试的时候X作用域没有变直接打印全局X <强>


可以这样理解在执行方法的时候第一步执行的是变量的声明然后才是后面的逻辑代码

var X=1         功能测试(){   alert('好的')   console.log(“好”)   var x=100   }         功能测试(){   var x;   alert('好的')   console.log(“好”)   x=100;   }

上面第二种测试就是第一种测试在JS解析时候的执行过程执行到测试方法时先把声明变量的部分挪到前面确定变量的作用域;赋值的地方不变;第二种测试x=100此时的x只是局部赋值


函数内容的var是局部赋值不带var的直接赋值是全局的

功能测试(){   x=1   }   console.log (x)//定义   测试();   console.log (x)//1


JS变量的声明