Articles of ecmascript 5

Node.js全局评估,引发ReferenceError

我正在尝试从Rhino书籍学习JavaScript。 我试图从书中执行以下关于eval() 。 我正在使用node.js(v0.10.29)来执行示例。 var geval = eval; // aliasing eval to geval var x = 'global'; // two global variables var y = 'global'; function f () { var x = 'local'; // define a local variable eval('x += "changed";'); // direct eval sets the local variable return x; } function g () { […]

Getter中的asynchronous函数在callback中返回

我想定义一个只读对象属性,它asynchronous获取一个值,然后使用新的EcmaScript 5 getters返回它。 但是,即使下面的示例代码中的magicValue明确永远不会定义,属性总是返回undefined。 另外,当我只是return 'xxx'; 打印的值仍然是undefined 。 它只在我returncallback函数之外时才起作用。 看起来不pipe是否调用myAsyncFunction的callback,立即执行return 。 我不确定这是V8中的错误,还是滥用JavaScript的获取者。 我可以得到这个工作吗? 我想,因为我现在可以使用getter和setter,所以我将使用getters / setter来读写属性和常规函数来完成某些任务。 var User = function (id) { this.id = id; }; Object.defineProperty(User.prototype, 'magic', { get : function () { myAsyncFunction(function (magicValue) { return magicValue; }); } }); var u = new User(5); console.log(u.magic); 打印undefined 。

JavaScript执行引擎未指定?

我最近开始学习JavaScript。 我一直在使用Node.js和Angular创build几个月的应用程序。 令我困惑的主要方面之一是如何在JavaScript中编写asynchronous代码,而不必担心线程同步 , 争用条件等问题。 于是,我发现了一些有趣的文章( [1] , [2] ),它们解释了如何保证我写的任何代码总是由单个线程执行。 底线,我所有的asynchronous代码只是简单的安排在事件循环中的某个点执行。 这听起来非常像操作系统调度程序将在一个单处理器的机器上工作,其中每个进程计划在有限的时间内使用处理器,给我们假的并行感。 而callback就像中断 。 这篇文章没有提供任何特定的参考,所以我认为JavaScript执行引擎工作的最佳来源当然应该是语言规范,所以我给了我最新的EcmaScript 5.1副本。 令我惊讶的是,我发现这个执行行为并没有在那里指定。 怎么来的? 这看起来像是在浏览器和节点中的所有JavaScript执行引擎中完成的基本deviseselect。 有趣的是,我还没有find一个地方,这是指定的任何特定的引擎。 事实上,我不知道人们是如何看待事情的方式,就像上面提到的书籍和博客那样,如此明确地肯定了这一点。 所以,我有一套我认为有趣的问题。 我将不胜感激任何提供见解,评论或简单参考的答案,指引我正确地理解以下内容: 由于EcmaScript没有指定JavaScript执行引擎应该与事件循环一起工作,所以JavaScript的实现似乎可以这样工作,不仅在浏览器中,而且在Node.js中呢? 这是否意味着我可以实现一个新的与EcmaScript兼容的JavaScript引擎,实际上它提供了真正的multithreadingfunction,如同步locking,条件等function? 使用事件循环的这个执行模型是否会阻止我利用多核,如果我想要执行一个强烈的CPU绑定任务? 我的意思是,我一定可以把任务分成几块(正如其中一篇文章中所解释的那样),但这仍然是连续的,而不是并行的。 那么,JavaScript引擎如何利用多核来运行我的代码呢? 你知道任何其他有信誉的来源,对于任何特定的JavaScript引擎实现的这种行为是正式指定的吗? 如果我们不能假设一些关于执行环境的东西,那么代码如何能够在库和引擎之间移植呢? 这个问题看起来太多了,或许这个post太宽泛,无法回答。 如果closures,我会试着用不同的线索问他们。 但是他们都是围绕这样一个事实,即我想更好地理解为什么JavScript和Node是用事件循环来devise的,如果在某处(除了浏览器源代码之外)指定了我可以阅读并深入理解devise和决策在这里,更重要的是,要确切地知道什么是写书的人的信息来源。

esprima-six npm模块发生了什么事?

我的npm项目有esprima-six npm模块作为传递依赖。 最近,已经不可能下载了,如下面的npm install输出所示: npm ERR! 404 Not Found npm ERR! 404 npm ERR! 404 'esprima-six' is not in the npm registry. npm ERR! 404 You should bug the author to publish it npm ERR! 404 It was specified as a dependency of 'syntax-error' npm ERR! 404 npm ERR! 404 Note that you can also […]