标签: ecmascript-4

在ECMAScript中检查空字符串时,为什么要在string ==""上使用string.length == 0?

我当前项目中的大多数开发人员使用(对我而言)奇怪的方法来检查ECMAScript中的空字符串:

if (theString.length == 0)
    // string is empty
Run Code Online (Sandbox Code Playgroud)

我通常会这样写:

if (theString == "")
    // string is empty
Run Code Online (Sandbox Code Playgroud)

后一版本对我来说似乎更具可读性和自然性.

我没有问过任何人似乎能够解释版本1的优点.我想在过去的某个时候有人告诉大家这是做到这一点的方法,但现在那个人离开了,没有人记得为什么要这样做办法.

我想知道为什么我应该在第二个版本中选择第一个版本?重要的是,一个版本比另一个版本好吗?由于某种原因,一个版本更安全还是更快?

(我们实际上是在符合ECMAScript Edition 4的Siebel eScript中执行此操作)

谢谢.

javascript string-comparison ecmascript-4

12
推荐指数
1
解决办法
2万
查看次数

为什么ECMAScript第4版完全废弃了?

我一直在寻找关于报废ECMAScript第4版的一些信息,但没有取得多大成功,即使在SO上也是如此.我知道Mozilla的JavaScript 1.7实现了第4版中提供的许多(全部?)新功能,我想我记得有一篇好的John Resig帖子,但我现在似乎无法在他的博客上找到它.

特别是,我想知道为什么它完全取消了ECMA-262第5版以及为什么它不仅仅是改进.一些功能非常酷,如生成器,迭代器,let,新赋值运算符和(我特别喜欢的)解构赋值.

我知道所有这些特殊功能只会在具有过时ECMAScript实现的浏览器中抛出错误,但为什么不包括它们,知道有一天这些实现很少而且很远?还有其他原因吗?我们是否可能会在未来的版本中看到一些报废功能重新出现,或者供应商是否害怕破坏兼容性,我们可能永远不会看到标准的这些改进?

顺便说一句,知道一些关于这个问题的意见会很高兴,你是否对从第5版中删除某些功能感到恼火,或者你认为这样做会更好?是否值得玩ECMAScript 4的实现?

javascript ecma262 ecmascript-4

12
推荐指数
2
解决办法
2966
查看次数

Javascript可选类型提示

当编程语言是静态类型时,编译器可以更精确地关于内存分配,因此通常更高性能(所有其他条件相同).

我相信ES4引入了可选类型提示(根据我的理解,Adobe因为actionscript而在其规范中做出了巨大贡献).javascript是否正式支持类型提示?ES6是否支持原生变量的可选类型提示?

如果Javascript支持类型提示,是否有任何基准测试表明它在性能方面如何得到回报?我还没有看到一个开源项目使用它.

javascript variables performance ecmascript-4 ecmascript-harmony

7
推荐指数
3
解决办法
1万
查看次数

如何从特定类别中获取所有 Unicode 字符?

例如,如何x-y\uxxxx\Uxxxxxxxxx从连接符标点 ( Pc ) 类别中获取代码点模式,用于扫描 ECMAScript 3/JavaScript 标识符?

原始问题

我需要帮助来验证词法扫描仪的 ECMA-262(3º 版,7.6)标识符的有效字符(代码点)。

语法引用

Identifier ::

  • IdentifierName 但不是 ReservedWord

IdentifierName ::

  • IdentifierStart
  • IdentifierName IdentifierPart
  • IdentifierStart ::
  • UnicodeLetter
  • $
  • _
  • \ UnicodeEscapeSequence # 不需要检查这个

IdentifierPart ::

  • IdentifierStart
  • UnicodeCombiningMark
  • UnicodeDigit
  • UnicodeConnectorPunctuation

UnicodeLetter ::

  • Unicode 类别中的任何字符“大写字母 ( Lu )”、“小写 > 字母 ( Ll )”、“大写字母 ( Lt )”、“修饰符字母 ( Lm )”、“其他字母 ( Lo )”或“字母”数(Nl)”。

UnicodeCombiningMark ::

  • Unicode 类别“非间距标记 ( Mn )”或“组合间距标记 ( Mc )”中的任何字符

UnicodeDigit ::

  • Unicode 类别“十进制数 ( …

javascript unicode ecmascript-4 ecmascript-3

2
推荐指数
1
解决办法
1031
查看次数