V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
isbase
V2EX  ›  JavaScript

JavaScript 里 var x = i = 0 这个写法是什么意思呢?

  •  
  •   isbase · 2016-05-06 14:16:50 +08:00 · 5173 次点击
    这是一个创建于 3157 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    2016-05-14 11:44:37 +08:00
    emric
        1
    emric  
       2016-05-06 14:18:26 +08:00
    var i = 0
    var x = i
    isbase
        2
    isbase  
    OP
       2016-05-06 14:20:33 +08:00
    @emric 多谢
    这种写法可读性太差了
    audi
        3
    audi  
       2016-05-06 14:22:25 +08:00
    var a = b = c = d = 10
    可读性多好
    Jeremial
        4
    Jeremial  
       2016-05-06 14:22:37 +08:00   ❤️ 3
    这种写法会导致 i 变成全局变量. 所以等同写法是这样的

    i = 0
    var x = i
    adeweb
        5
    adeweb  
       2016-05-06 14:23:12 +08:00   ❤️ 1
    如果 i 在之前未定义,恭喜你,创建了一个全局变量
    function abc(){var x=i=1;}
    abc()
    console.log(i) //1
    dxwwym
        6
    dxwwym  
       2016-05-06 14:24:48 +08:00 via iPhone
    js 不用 var 的都是全局变量?
    morethansean
        7
    morethansean  
       2016-05-06 14:25:00 +08:00   ❤️ 1
    @emric
    i = 0;
    var x = i;
    emric
        8
    emric  
       2016-05-06 14:31:48 +08:00
    @morethansean 嗡了一声醒了过来。 i 没有事先声明...
    isbase
        9
    isbase  
    OP
       2016-05-06 14:32:51 +08:00
    zwh8800
        10
    zwh8800  
       2016-05-06 14:33:50 +08:00   ❤️ 1
    @dxwwym 对,除非在 strict 模式下
    Biwood
        11
    Biwood  
       2016-05-06 15:17:02 +08:00
    糟糕的写法,最好不要这么写
    hooluupog
        12
    hooluupog  
       2016-05-06 15:22:23 +08:00
    我去。。
    webbought
        13
    webbought  
       2016-05-06 15:52:56 +08:00
    糟糕的写法,会隐式创建一个全局变量
    hxtheone
        14
    hxtheone  
       2016-05-06 17:21:02 +08:00
    @Jeremial 涨姿势了
    ChiChou
        15
    ChiChou  
       2016-05-06 18:19:08 +08:00
    @emric 不是 var i 哟,是全局的 i
    DaraW
        16
    DaraW  
       2016-05-06 21:27:47 +08:00
    另外补充下,这个全局变量和用 var 声明的全局对象是有区别的, var 定义的不能被 delete ,这个隐式全局变量是可以被 delete 的
    tcstory
        17
    tcstory  
       2016-05-06 22:54:01 +08:00
    额,虽然写了几个月时间的 js,但是我还是不懂这种语法,但是我也不想学这种语法,因为这样写出的程序就是垃圾
    dphdjy
        18
    dphdjy  
       2016-05-07 10:43:47 +08:00 via Android
    @tcstory 这是恶意黑吗~很多语言都有类似用法~
    高阶语言的表达式更加强(e)大(xin)。。。看看 ES7 ,我已经不会 JavaScript 了
    tcstory
        19
    tcstory  
       2016-05-07 13:03:27 +08:00
    @dphdjy 不算是黑它把? 我写代码力求表述清晰,不喜欢这种语法糖
    InFaNg
        20
    InFaNg  
       2016-05-14 11:44:37 +08:00 via Android
    @dxwwym 不用 var 的变量是不规范的,在严格模式里是无效的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:54 · PVG 11:54 · LAX 19:54 · JFK 22:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.