search

Home  >  Q&A  >  body text

javascript - 为什么var的时候不可以做+=运算

var a+=1;
报错: Uncaught SyntaxError: Unexpected token +=(…)

PHP中文网PHP中文网2817 days ago255

reply all(3)I'll reply

  • ringa_lee

    ringa_lee2017-04-10 17:41:00

    语法错误,不知道你这样写代码的目的是什么,你 var a; 是定义一个变量 a 值为 undefined, 然后你让 undefined 再做 +1 操作?本意上将 var 创建变量时可以赋值即 var a = 1;,但是不支持表达式运算的写法,你可以先 var a = 1; a+=1;这样写第一句是赋值,第二句是表达式运算

    reply
    0
  • 怪我咯

    怪我咯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;

    reply
    0
  • PHPz

    PHPz2017-04-10 17:41:00

    楼上说的对,在js中,var a = 1 和 function abc()这种形式的函数叫做预处理,js会现在内存中把给变量a 分配一个空间,赋值undefined,会把函数体置于内存中,所以我们经常会看到虽然函数声明在调用函数的下面,依然可以执行的现象

    abc();//调用函数
    function abc(){
        ...
    }
    //或者
    var a ;//也不会出错

    js做完预处理之后,才会开始去至上而下的去执行代码

    reply
    0
  • Cancelreply