var a+=1;
报错: Uncaught SyntaxError: Unexpected token +=(…)
ringa_lee2017-04-10 17:41:00
语法错误,不知道你这样写代码的目的是什么,你 var a; 是定义一个变量 a 值为 undefined, 然后你让 undefined 再做 +1 操作?本意上将 var 创建变量时可以赋值即 var a = 1;,但是不支持表达式运算的写法,你可以先 var a = 1; a+=1;这样写第一句是赋值,第二句是表达式运算
怪我咯2017-04-10 17:41:00
这个问题的解答很简单,底层怎么作或实现我不是太清楚,但我知道底层是依照标准实作的,所以看标准不就得了。
这是不符合的标准中所定义的合法语法,因为var语句不支持你写的这个声明方式。标准参考连结。
var
语句只支持两种合法的声明方式,一种是var
后面加变量识别名称。另一种是var后面加变量识别名称后加上等号(=)代表赋值,也就是初始化的值。两种例子如下:
var a;
var a=1;
所以只要是用变量名称后加上等号,随便你高兴怎么定义,以下都算是合法的var语句,但这样声明出来的a变量没太大用处:
var a = a += 1;
var a = a + 1;
var a = a += a -=1;
PHPz2017-04-10 17:41:00
楼上说的对,在js中,var a = 1 和 function abc()这种形式的函数叫做预处理,js会现在内存中把给变量a 分配一个空间,赋值undefined,会把函数体置于内存中,所以我们经常会看到虽然函数声明在调用函数的下面,依然可以执行的现象
abc();//调用函数
function abc(){
...
}
//或者
var a ;//也不会出错
js做完预处理之后,才会开始去至上而下的去执行代码