草庐IT

javascript - V8 会自动缓存编译的正则表达式吗?

所以我知道在Javascript中实例化一个正则表达式会导致它被自动编译,如果该正则表达式存储在一个变量中,它将被重用而无需重新编译。示例:varre=/[Ff]oo|[Bb]ar/;"Foo".match(re);//["Foo"]"Baz".match(re);//null但是,重复的正则表达式是重新编译还是V8(Chrome/Node.js)智能地重用它们(就像PHP对preg_*函数所做的那样)?functionisFooBar(str){returnstr.match(/[Ff]oo|[Bb]ar/);}isFooBar("Foo");//["Foo"]isFooBar("B

node.js - 如何在 node.js 中设置 v8 选项

例如,我想禁用新的堆快照,所以我输入如下内容:Node--new_snapshot=false但我收到一个错误:错误:标志的非法值--new_snapshot=falseoftypebool我在语法方面缺少什么? 最佳答案 我必须深入研究v8源代码才能得到这个。由于某种原因,我找不到它的记录。但是,通过设置--option启用bool选项,并通过使用--nooption禁用bool选项(注意no前缀)。所以在你的情况下使用node--nonew_snapshot 关于node.js-如何

c - V8 中 JavaScript 对象的内存布局

我希望为V8编写一些C绑定(bind),因此我需要弄清楚各种原始JavaScript类型的内存布局。是否有任何关于这些细节的文档? 最佳答案 您无需了解数据类型布局即可为V8编写C绑定(bind)。当您使用V8而是通过API工作时,永远不会真正直接访问对象-只有V8实现知道它们是如何布局的。例如获取属性foo来自一个对象o在C++中看起来像这样:v8::Handleo;v8::Handlev=o->Get(v8::String::NewFromUtf8(isolate,"foo"));现在要将它封装到C中,只有需要知道如何表示和传递

javascript - 当用作 Node.js 的 JS 引擎时,Microsoft 的 ChakraCore 是否比 Google 的 V8 提供任何性能优势

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion[我已经编辑了我的问题,将场景缩小到只有Node.js。请重新打开它。这是一个有用的问题,正确的答案可能会在未来出现,而且不会很快出现,因为ChakraCore还很年轻。但是这个问题是有效的,应该在这里]多年来,我们都知道/读过/听说过GoogleV8引擎的荣耀,以及它如何让node.js变得如此美丽。但是现在我们可以选择Microsoft的ChakraCore和Google的V8作为我们首选的Java

node.js - V8 是否有任何预编译的二进制文件?

V8是node.js的重要组成部分,它使用GoogleV8Javascript引擎。在我的windowsbox[Windows7/64-bit]上构建V8将花费我数小时的时间来获取和安装我不熟悉的工具(尽管我确实使用Cygwin)。如果那里有一些二进制安装程序,它会为我省去很多麻烦。谷歌搜索没有返回任何明显的位置——这里的大师知道吗?即使您对我的确切环境一无所知,在这里分享其他人也会对同舟共济的人有所帮助... 最佳答案 node.js中没有V8二进制文件。相反,V8被绑定(bind)到node.js二进制文件中。就像其他人一样在C

node.js - Node.js 和 V8 有什么关系?

我一直在思考这个问题,但似乎无法找到答案。Node.js和V8有什么关系?Node.js可以在没有V8的情况下工作吗? 最佳答案 WhatistherelationshipbetweenNode.jsandV8?V8是node.js内部的Javascript引擎,用于解析和运行您的Javascript。Chrome内部使用相同的V8引擎在Chrome浏览器中运行javascript。Google开源了V8引擎,node.js的构建者使用它在node.js中运行Javascript。CanNode.jsworkwithoutV8?没有

node.js - 什么是 ".v8flags.3.14.5.9.{Name}"?

我正在全新安装Windows10Professional(x64),并注意到我的主目录的根目录中出现了一些特殊文件,特别是我看到....v8flags.3.14.5.9.CielCiel显然是我的用户名;我试图在这个文件上进行搜索,但发现很少-我能说的最好的是它与nodejs相关,这可能是有道理的,因为我有VisualStudio2015已安装。其他人可以识别这个文件是什么,我是否需要保留它? 最佳答案 您可以放心地删除它。nodejs模块v8flags使用该文件进行缓存。如果您删除它,它将在下次运行时创建一个新的。我猜它的创建是因

javascript - 箭头函数是否比 v8 中的普通独立函数声明更快(性能更高、更轻)?

我问这个问题是因为我和我的同事在编码风格上存在争议,因为他更喜欢箭头函数声明:constsum=(a,b)=>a+b;而且我更喜欢老式的独立函数声明:functionsum(a,b){returna+b;}我的观点是旧式代码更具可读性,您可以更清楚地区分函数和变量声明。他的观点是带有箭头函数的代码运行得更快。当您使用旧式独立函数声明而不是箭头函数时,您是否了解实际的性能损失(在v8中)?惩罚真的存在吗? 最佳答案 V8开发人员在这里。箭头函数(大部分)只是常规函数声明的“语法糖”。没有性能差异。

javascript - 如何有效地检查变量是数组还是对象(在 NodeJS 和 V8 中)?

在NodeJS和V8中,有什么方法可以有效地检查变量是对象还是数组?我正在为MongoDB和NodeJS编写模型,并且要遍历对象树,我需要知道对象是简单的(数字、字符串、...)还是复合的(哈希、数组)。似乎V8内置了快速Array.isArray,但是如何判断object是否为Object呢?我的意思是像散列{}或类实例这样的复杂对象,而不是像newString()这样的复杂对象?通常可以这样做:Object.prototype.toString.call(object)=="[objectObject]"或者这个:object===Object(object)不过这个操作好像不便宜

javascript - 在 V8 JavaScript (Chrome & Node.js) 中访问行号

使用过C等语言的JavaScript开发人员经常错过使用某些类型的内省(introspection)的能力,例如记录行号,以及当前方法是从哪个方法调用的。好吧,如果您使用的是V8(Chrome、Node.js),您可以使用以下内容。 最佳答案 Object.defineProperty(global,'__stack',{get:function(){varorig=Error.prepareStackTrace;Error.prepareStackTrace=function(_,stack){returnstack;};vare