【问题标题】:es6 declare a variable inside an IF ( like es5 )es6 在 IF 中声明一个变量(如 es5 )
【发布时间】:2017-02-02 01:46:13
【问题描述】:

好的,这已经到了我很恼火并且无法解决的地步。

在 ES5 中,我经常会做类似...

if( (users = resp.results) && users.length > 0 ) {
    // do something with users
}

暂时,让我们忘记范围和含义以及所有这些......

从 ES6 开始,Babel 不再喜欢这种语法,Chrome 控制台也不喜欢。

现在在 ES6 中是否有等效的语法?

【问题讨论】:

  • Chrome 控制台绝对没有这个问题...
  • 对不起,我撒谎了! chrome 控制台确实可以工作,但那是因为它支持 es5 + es6。至少这是我的假设。
  • 与 ES5/ES6 无关。它是'use strict',Babel 强制你使用它不允许设置未声明的变量。所以...你不能做a = 1,你必须做var a = 1
  • 啊,我明白了,明白了

标签: javascript syntax ecmascript-6 ecmascript-5


【解决方案1】:

如果你希望它在使用 'use strict' 时有效,这是 Babel 强制执行的,你需要先声明 users。如果您不使用 Babel 或“使用严格”,您的原始代码将可以正常工作。

var users;
if( (users = resp.results) && users.length > 0 ) {
    // do something with users
}

将与'use strict' 一起使用。

如果您想继续使用此技巧,也可以手动从转换后的 babel 代码顶部删除 'use strict'

【讨论】:

  • 所以诀窍是我不想先定义用户,我希望它在 if 条件中定义
  • 我确实尝试了你的建议,它只有在我预先定义变量时才有效
  • @AssafMoldavsky 开启“使用严格”是不可能的。假设您使用的是 Babel,您可以手动删除转换后代码顶部的“use strict”,并且您想要的内容将起作用。
  • 我明白你的意思,我明白了,我认为在 ES6 中这种语法不再可能了
猜你喜欢
  • 2018-11-07
  • 2021-03-04
  • 2013-07-09
  • 1970-01-01
  • 2017-03-11
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多