javascript - 为什么var的时候不可以做+=运算
PHP中文网
PHP中文网 2017-04-10 17:39:00
[JavaScript讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
ringa_lee

语法错误,不知道你这样写代码的目的是什么,你 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;
PHPz

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号