js变量问题

Posted 土豆zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js变量问题相关的知识,希望对你有一定的参考价值。

var a=100;
function a(){
  console.log(a);
}
a();

这个串代码执行完会报错 : a is not a function

问题来了,为什么会报这个错误呢?  这里涉及到函数和变量的预解析:

1)函数声明会置顶
2)变量声明也会置顶
3)函数声明比变量声明更置顶:(函数在变量上面)
4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
5)声明过的变量不会重复声明

知道以上的规则,上面的代码等同于 :  

var a=function (){
  console.log(a);
}
var a=100;
a();

相当于给a重新赋值了,所以会报错.

以上是关于js变量问题的主要内容,如果未能解决你的问题,请参考以下文章

关于JS 函数里 修改 全局变量 的问题

如何让scss变量能够当做js变量来使用

JS中的作用域以及全局变量的问题

js中定义变量问题,请问定义变量时有var关键字和没有var关键字有啥差别?

js for里面的变量问题

js变量问题