javascript - 为什么var的时候不可以做+=运算
PHP中文网
PHP中文网 2017-04-10 17:39:00
0
3
263

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
左手右手慢动作

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

刘奇

这个问题的解答很简单,底层怎么作或实现我不是太清楚,但我知道底层是依照标准实作的,所以看标准不就得了。

这是不符合的标准中所定义的合法语法,因为var语句不支持你写的这个声明方式。标准参考连结。

var语句只支持两种合法的声明方式,一种是var后面加变量识别名称。另一种是var后面加变量识别名称后加上等号(=)代表赋值,也就是初始化的值。两种例子如下:

var a;
var a=1;

所以只要是用变量名称后加上等号,随便你高兴怎么定义,以下都算是合法的var语句,但这样声明出来的a变量没太大用处:

var a = a += 1;
var a = a + 1;
var a = a += a -=1;
PHPzhong

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板