长问题
首先,我知道 ECMA Script 是标准,而 JavaScript 和 JScript 是实现。我知道这三个都有自己的规范维护,并且有很多很多引擎、解释器和实现,但我的具体问题是:
假设为这三个中的每一个都实现了完美的解释器和引擎,那么您可以在其中一个中做什么而在另一个中无法做到,或者在一个中与其他两个中会产生什么不同的效果?
我知道这是一个广泛的问题,但由于两种语言(JScript 和 JavaScript)都源自规范(ECMAScript),因此实际差异应该可以忽略不计。
同样,我不是在谈论跨浏览器兼容性(IE8 和 IE9 使用了不同的引擎,对 JScript 的解释不同,并且标准随着时间的推移而变化),而是纯 ECMA5、JavaScript(如果有官方标准,我猜最接近的是W3C或者可能是MDN和 JScript(显然在MSDN上维护(如图))。
笔记:
这不是这个已经过时五年的问题的重复,它处理的是术语的定义,而不是语言的应用,或者这个问题再次解释了 JavaScript 和 JScript 是 ECMAScript 的方言,但没有进入任何功能差异。
这个问题是最接近的,但具体来说,我所追求的是开发人员期望 X 并获得 Y 应该警惕的技术陷阱。一个很好的例子来自这个问题,其中以下代码:
// just normal, casual null hanging out in the sun
var nullA = null;
// query for non existing element, should get null, same behaviour also for getElementById
var nullB = document.querySelector('asdfasfdf');
// they are equal
console.log(nullA === nullB);
// false
nullA instanceof Object;
// will throw 'Object expected' error in ie8. Black magic
nullB instanceof Object;
展示了 JScript 实现的差异,理论上不符合 ECMA 标准。