我处在一个尴尬的境地,
我使用纯JavaScript已经有近3年了,我知道JavaScript是单线程语言,你可以使用setInterval
和setTimeout
函数来模拟异步执行,
但当我想到他们如何工作时,我无法清楚地理解它.那么这些函数如何影响执行上下文?
我想在特定时间内只运行代码的一部分,然后切换到另一部分.如果是这样,那么很多setInterval
或者setTimeout
电话会影响性能吗?
使用.NET,我可以编写一个托管脚本引擎的应用程序,该脚本引擎符合Microsoft的IActiveScript约定.这包括来自Microsoft的JScript和VBScript,以及PerlScript和RubyScript,我不知道第三方还有什么.
在代码中执行此操作的方法是这样的:
Type engine = Type.GetTypeFromProgID(progId, true);
_engine = Activator.CreateInstance(engine) as IActiveScript;
Run Code Online (Sandbox Code Playgroud)
其中progId
可以采用Javascript,JScript,ECMAScript,VBScript等值.运行cscript.exe时可以执行类似的操作,在命令行中使用该//E
选项指定progId .例如,这个命令:
cscript.exe <file> //e:JScript
Run Code Online (Sandbox Code Playgroud)
..将通过JScript引擎运行指定的文件,无论其扩展名如何.
在我的机器上,如果我查看HKLM\SW\Classes\
,三个progIds {Javascript,JScript,ECMAScript}都指向相同的CLSID,我猜这是JScript 5.8脚本引擎:{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}
是否有ProgId或CLSID我可以指定运行IE9的Javascript引擎,又称"Chakra"?
IE9的引擎是否仍然被IActiveScript加载?
Microsoft的文档表明它确实如此,但没有指定ProgId或CLSID.
[ 我编辑了我的问题,将场景缩小到只有Node.js. 请重新打开它.这是一个有用的问题,正如ChakraCore还处于很小的年龄时,可能会在未来及时提出正确的答案.但这个问题是有效的,应该在这里 ]
我们都知道/阅读/听说过谷歌V8引擎的荣耀,以及它如何让node.js成为多年来的美丽.
但现在我们可以选择在Microsoft的ChakraCore和Google的V8之间作为我们首选的JavaScript引擎进行选择,我想知道是否有人有任何证据或测试用例,他们发现其中一个比nodejs更有效.
请回复一些事实和结果,因为有人不应该使用/选择Chakra只是因为他/她喜欢微软或同样适用于V8和Google.
谢谢.
微软可能(实际上我认为它将来)将IE10 Chakra(JScript引擎)作为一个独立模块发布,就像谷歌V8 JavaScript引擎一样.
The new JavaScript engine takes advantage of multiple CPU cores through Windows to interpret, compile, and run code in parallel.
- http://technet.microsoft.com/en-us/library/gg699435.aspx
和
The Chakra engine interprets, compiles, and executes code in parallel and takes advantage of multiple CPU cores, when available.
- http://msdn.microsoft.com/en-us/ie/ff468705.aspx
等等,什么?!?这是否意味着我们在IE9中有多线程并行JavaScript代码执行(在web-workers之外)?
我认为这只是一个糟糕的营销噱头,但我想看到更多关于此的信息.也许他们的意思是不同的浏览器窗口/标签/进程可以使用多个CPU?
我有一个问题的非生产环境中的Internet Explorer 11,其中
window.location.origin
是undefined
.
但是,在生产环境中,此值实际返回
window.location.origin = http://www.myproductionwebsite.com
此问题仅存在于Internet Explorer中,并且适用于生产和非生产环境中的Chrome和Firefox,这使我相信它是IE11中Chakra JavaScript引擎的填充方式origin
.
我还查看了生产和非生产环境中的请求和响应标头,所有参数都是相同的.
Internet Explorer 11如何window.origin.location
以不同的方式计算Chrome或Firefox?
javascript internet-explorer intranet chakra internet-explorer-11
在JavaScript中,一个通常被吹捧的良好性能原则是避免改变对象的形状.
这让我很奇怪,是这样的
class Foo {
constructor() {
this.bar = undefined;
}
baz(x) { this.bar = x; }
}
Run Code Online (Sandbox Code Playgroud)
一个有价值的最佳实践,将提供比这更好的性能
class Foo {
constructor() {
}
baz(x) { this.bar = x; }
}
Run Code Online (Sandbox Code Playgroud)
这是真是假?为什么?在一个JS引擎中,它是否或多或少与其他引擎相比?
我正在使用Chakra UI 库提供的“暗模式”功能。但是,我不知道如何更改“暗模式”颜色。在文档中,我看到 Chakra UI 基于一种叫做“ styled-system ”的东西,所以我试图传递一个新的东西:theme
themeProvider
const theme = {
...defaultTheme,
modes: {
dark: {
background: '#000',
},
},
};
Run Code Online (Sandbox Code Playgroud)
<ThemeProvider theme={theme}></ThemeProvider>
Run Code Online (Sandbox Code Playgroud)
然而,这没有用。我也试图modes
用一个colors
对象包裹这个对象,但这也不起作用。如何自定义“暗模式”颜色?
有没有一种方法可以使用 JavaScript 代码来了解运行该代码的 JavaScript 引擎?
我不想只获取 JavaScript 引擎的浏览器类型。
chakra ×10
javascript ×9
v8 ×4
spidermonkey ×3
.net ×1
browser ×1
c# ×1
c++ ×1
intranet ×1
node.js ×1
performance ×1
reactjs ×1
wsh ×1