标签: ecma262

JavaScript和ECMAScript有什么区别?

ECMAScript和JavaScript有什么区别?根据我的推断,ECMAScript是标准,JavaScript是实现.它是否正确?

javascript ecma262

455
推荐指数
14
解决办法
13万
查看次数

为什么在JavaScript中不推荐使用arguments.callee.caller属性?

为什么arguments.callee.caller在JavaScript中弃用了该属性?

它已添加,然后在JavaScript中弃用,但ECMAScript完全省略了它.某些浏览器(Mozilla,IE)一直支持它,并且在地图上没有任何计划来删除支持.其他人(Safari,Opera)已经采用了它的支持,但对旧浏览器的支持是不可靠的.

是否有充分理由将这些有价值的功能置于不确定状态?

(或者,有没有更好的方法来获取调用函数的句柄?)

javascript ecma262

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

JSON遗漏了Infinity和NaN; ECMAScript中的JSON状态?

知道为什么JSON遗漏了NaN和+/- Infinity?它将Javascript放在奇怪的情况下,否则,如果它们包含NaN或+/-无穷大值,那么否则可以序列化的对象不会.

看起来像是一成不变的:见RFC4627ECMA-262(第24.3.2节,JSON.stringify,第4节,第507页,最后编辑):

有限数字通过调用进行字符串化ToString(number).无论符号如何,NaN和Infinity都表示为String null.

javascript json ecma262

161
推荐指数
6
解决办法
6万
查看次数

为什么没有官方JavaScript参考?

我试图搜索JavaScript引用,但没有可用的.最好的两个建议来源是MDN(Mozilla开发者网络)和W3Schools.

为什么?

javascript reference web-standards ecma262

85
推荐指数
5
解决办法
2万
查看次数

我可以为特定功能禁用ECMAscript严格模式吗?

我在MDC或ECMAscript规范中没有找到关于我的问题的任何内容.可能有人知道一种更"笨拙"的方法来解决这个问题.

我正在调用"use strict"我环境中的每个javascript文件.我的所有文件都是这样开始的

(function(win, doc, undef) {
    "use strict";

    // code & functions
}(window, window.document));
Run Code Online (Sandbox Code Playgroud)

现在,我有一个处理错误的自定义函数.该函数使用该.caller属性来提供上下文堆栈跟踪.看起来像这样:

var chain = (function() {
    var _parent = _error,
        _ret = '';

    while( _parent.caller ) {
        _ret += ' -> ' + _parent.caller.name;
        _parent = _parent.caller;
    }

    return _ret;
}());
Run Code Online (Sandbox Code Playgroud)

但是,当然,在严格模式下.caller是一个不可删除的道具,在检索时抛出.所以我的问题是,是否有人知道如何禁用更严格的"功能明智"?

"use strict";在被调用之后被所有函数继承.现在我们有可能在特定函数中使用严格模式,只需调用它们"use strict";的顶部,但有没有办法实现相反的目的?

javascript ecma262 ecmascript-5 strict-mode

70
推荐指数
2
解决办法
4万
查看次数

有没有办法检查是否强制执行严格模式?

无论如何都要检查是否强制执行严格模式'use strict',并且我们想要为严格模式执行不同的代码,而为非严格模式执行其他代码.寻找像这样的功能isStrictMode();//boolean

javascript ecma262 ecmascript-5 strict-mode

68
推荐指数
6
解决办法
1万
查看次数

Javascript IN运算符兼容性

有人可以告诉我,哪个ECMA版本的IN运算符可用以及哪些浏览器(版本)支持它?

说明:

IN运算符可以像下面这样使用:

var myObject = {
    Firstname: 'Foo',
    Lastname: 'Bar'
};

if('Lastname' in myObject){
    // Lastname is an attribute of myObject
}
Run Code Online (Sandbox Code Playgroud)

javascript ecma262

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

ECMAScript真的是Lisp的一种方言吗?

我的一位朋友提请我注意第四届欧洲Lisp研讨会的欢迎辞:

...任何Lisp方言的实现和应用,包括Common Lisp,Scheme,Emacs Lisp,AutoLisp,ISLISP,Dylan,Clojure,ACL2,ECMAScript,......

然后询问ECMAScript是否真的是Lisp的方言.真的可以这样考虑吗?为什么?

是否有明确定义的明确标准来帮助我们检测语言是否是Lisp的方言?或者是一种非常松散的方言(在这种情况下,我们可以将Python,Perl,Haskell等添加到Lisp方言列表中吗?)

javascript lisp ecma262

47
推荐指数
7
解决办法
9272
查看次数

在ECMAScript5中,"使用严格"的范围是什么?

严格模式编译指示在ECMAScript5中有什么范围?

"use strict";
Run Code Online (Sandbox Code Playgroud)

我想这样做(主要是因为JSLint没有抱怨它):

"use strict";

(function () {
  // my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否会破坏其他代码.我知道我可以做到这一点,这将把pragma的范围扩展到函数...

(function () {

  "use strict";

  // my stuff here...

}());
Run Code Online (Sandbox Code Playgroud)

但JSLint抱怨它(当启用"严格"JSLint选项时),因为它认为您在启用"use strict"之前正在执行代码.

这是我的问题.如果我有fileA.js:

"use strict";
// do some stuff
Run Code Online (Sandbox Code Playgroud)

和fileB.js:

eval( somecodesnippet ); // disallowed by "use strict"
Run Code Online (Sandbox Code Playgroud)

然后将它们以相同的顺序包含在我的html页面中,将pragma限定为文件,还是将pragma放到fileB中,从而阻止eval执行?

javascript scope strict ecma262 ecmascript-5

41
推荐指数
2
解决办法
7644
查看次数

JavaScript:可以使用单引号('use strict')启用ECMAScript 5的严格模式("use strict")吗?

JavaScript并不关心你的字符串是双引号"double"还是单引号'single'.

ECMAScript 5的严格模式的每个示例都"use strict"使用双引号启用它.我可以执行以下操作(单引号):

alert(function(){
  'use strict';
  return !this;
}());
Run Code Online (Sandbox Code Playgroud)

如果启用了Strict模式,则返回true,否则返回false.

javascript strict ecma262 ecmascript-5

38
推荐指数
3
解决办法
5262
查看次数