定义一个实用程序函数来检查对象的原型链(在Chrome中),我得到了数组.

所以它会出现
[].__proto__ === Array.prototype // === [Symbol(Symbol.unscopables): Object]
Run Code Online (Sandbox Code Playgroud)
我理解第一个平等.我不知道第三个词是什么,虽然我听说ES6会有符号.
这个东西和Array.prototype一样吗?为什么这样打印?
编辑:chrome://版本信息:
Google Chrome 40.0.2214.111 (Official Build)
Revision 6f7d3278c39ba2de437c55ae7e380c6b3641e94e-refs/branch-heads/2214@{#480}
OS Linux
Blink 537.36 (@189455)
JavaScript V8 3.30.33.16
Run Code Online (Sandbox Code Playgroud) 阅读下划线的来源,我注意到使用void 0而不是undefined.我知道在某些浏览器中,undefined可以被覆盖,在许多情况下,解决这个问题的方法是在调用函数或return;-ing 时省略参数.事实上,为了缩小目的,这样做比使用更有意义void 0.
(function (window, undefined){
/* ... */
}(window));
Run Code Online (Sandbox Code Playgroud)
从各方面来看似乎都更好.它更具可读性void 0,可以进一步缩小,并且可以提供一些微小的性能提升,如链接答案中所述.
好的,void 0在下划线中出现约6次,在主干中出现9次,因此它没有太大的区别.所以,我的问题是:是否有任何理由或角落案例void 0更可取?
我正在尝试编写一个球拍阅读器扩展程序,禁用对管道角色的特殊处理|.
我有两个文件:mylang/lang/reader.rkt实现lang阅读器并mylang/testing.rkt试用它.我跑去raco pkg install --link安装郎.
这是reader.rkt:
#lang s-exp syntax/module-reader
racket
#:read my-read
#:read-syntax my-read-syntax
(define (parse-pipe char in srcloc src linum colnum)
#'\|)
(define my-readtable
(make-readtable #f #\| 'terminating-macro parse-pipe))
(define (my-read-syntax src in)
(parameterize ((current-readtable my-readtable))
(read-syntax src in)))
(define (my-read in)
(syntax->datum
(my-read-syntax #f in)))
Run Code Online (Sandbox Code Playgroud)
有了testing.rkt这样的:
#lang mylang
(define | 3)
(+ 3 2)
Run Code Online (Sandbox Code Playgroud)
按预期运行并生成5个.但是下一个不会:
#lang mylang
(define |+ 3)
(+ |+ 2)
Run Code Online (Sandbox Code Playgroud)
抱怨define: bad …