V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  vevlins  ›  全部回复第 38 页 / 共 48 页
回复总数  952
1 ... 34  35  36  37  38  39  40  41  42  43 ... 48  
2020-02-02 10:22:17 +08:00
回复了 v2qwsdcv 创建的主题 宠物 上海 5 个月的 男泰迪 有收养的吗
标题看出了 bdsm 的神秘气息(゚ o ゚;;
@feng12345 吹上天了。我们老家也是百强区,211 可以直接面试,你 211 能直接进 bat 核心部门?不是中央部委才算公务员。
很多人觉得图形容易是因为很多先验知识被忽略了,很多逻辑自己脑补了。不信自己通过画图来描述下自己熟悉的一个网站所有隐含逻辑,根本无法做到。
因为本质上图形相比文字不具备很好的逻辑表述能力,这种方案注定是失败的。
2020-01-19 14:15:56 +08:00
回复了 vevlins 创建的主题 Lua lua 为什么要使用~=当作不等于运算符?
@lithiumii 好有道理
2020-01-14 10:31:58 +08:00
回复了 deepmindlab 创建的主题 程序员 现在看智力水平决定高考成绩有毛病吗?
古之成大事者,不惟有超世之才,亦必有坚韧不拔之志。
2020-01-07 09:34:21 +08:00
回复了 Livid 创建的主题 JavaScript ECMAScript 2016 到 2019 的所有新功能
分享自己整理的文章,如何了解 ES 最新提案。https://juejin.im/entry/5e13494b5188253ab17ef6e5
2020-01-06 21:14:44 +08:00
回复了 hashchenxinshi 创建的主题 求职 中职 实习能否去大厂实习
人贵以恒,事成于敬。
我提一个问题,按照上面说的各种 package.json 不变就不重新构建,无法依靠 semantic 版本号进行小版本的自动更新了。
@secondwtq 感谢回复
2019-12-28 15:47:41 +08:00
回复了 ntcy2010 创建的主题 Apple 现在苹果 ios 应用退款都是系统审核,没有人工审核吗?
苹果现在变坑了,之前买了一个去广告软件看它指定的小说站没效果,六块钱发了好几封邮件也不退。
2019-12-27 19:46:53 +08:00
回复了 passion23 创建的主题 职场话题 想放弃学业,请已经工作的各位给点合理建议
摊派转硕,最划算。感觉毕业遥遥无期还是早点退出,25 又不大
@vevlins 正因为 reference 才需要走完整的垃圾回收机制,因为不确定该指针在什么地方被引用了。但 primitive 每次都是 pass by value,自然跟作用域保持一致就可以。
再补充下,看到有文章说所有值都是存储在堆内存上(现在的 v8 不一定这样,跟上面说的一样应该怎么实现都可以,只是效率和稳定性的区别),栈中只存储指针,感觉这种说法很合理,指针的大小都是固定的且比较小的,如果还超过就爆栈。 垃圾回收机制应该跟大多数文章说的一样,按照我现在猜测,如果是 primitive 则在退出后清理引用的空间,reference 才走完整的垃圾回收机制。primitive 是 pass by value, object 是 pass by reference,所以才有深拷贝和浅拷贝的区别。

至于 immutable 还是 mutable,还要再深入理解下。
又想了想,感觉自己是被很多“深拷贝浅拷贝”之类的文章误导了。

存储在哪里跟 primitive 与否没有任何关系,完全取决于实现方式。不过之前说的前提还是成立的,1 要考虑生命周期 2 要考虑会不会爆栈。 在这个前提下,即使是 primitive 的字符可以放在堆上,因为一个字符类型的量大小范围非常大。
@marcong95 v8 对 string 的存储似乎有些复杂,看了几篇文章没看懂,情况有些多。 但有的地方提到了 v8 对单个字符的上限有 512MB,应该是存在堆上。

primitive 的确实是 immutable 的,重新赋值会重新开辟一个空间。当然我也没看过 v8 之类的实现,但大多数文章都是这样说的。
@nfyig 按照我的理解,本身这个变量确实是 primitive,但被引用做闭包后这个量被包含在了返回的的 function 对象内部,从 primitive 变为一个 reference 量下类似于 upvalue 之类 key 对应的 value 了。这跟题目中的说法不冲突。
再明确一下讨论的范围,js 确实不直接操作内存,具体原理肯定要考虑到解释器 /编译器的实现,但这样思考感觉又像是套娃。至少按照这种说法,java 也没有内存一说了。

但是按照我的理解,诸如 primitive 和 reference 这种在 ecma 中制定并描述了其行为的数据类型,JS 引擎为了实现这种行为规范,应该会在底层采取某种内存分配方式。

讨论的范围仅限制在规范层面和 V8 实现层面。
@muzuiget v8 是用 c++写的,是否要看 c++中如何实现呢。我也有这种想法,但按照这种思考方式,哪些语言 /编译器才有直接操作内存的能力呢?
ecma 没有对内存分配做规定,那 v8 等主流的引擎是如何实现的呢? 我看到过有 stackoverflow 回答中提到 null\undefined\true\false 在 v8 实现中是放在堆上的,类似于 Java 中 Boolean.True 的概念,为何要这样设计?
1 ... 34  35  36  37  38  39  40  41  42  43 ... 48  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1535 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 17:03 · PVG 01:03 · LAX 09:03 · JFK 12:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.