奇怪的JavaScript习语-"/xyz/.test(function(){xyz;})"的作用是什么?
- 论坛
- 奇怪的JavaScript习语-"/xyz/.test(function(){xyz;})"的作用是什么?
8 浏览
奇怪的JavaScript习语-"/xyz/.test(function(){xyz;})"的作用是什么?
约翰·雷西格写了一个很棒的Class函数,叫swanky。我正在努力弄清楚发生了什么,几乎已经弄清楚了所有的东西,除了一行代码:
fnTest = /xyz/.test(function () {xyz;}) ? /\b_super\b/ : /.*/;
有几件事情立刻跳入脑海,首先xyz
从未被初始化为变量;那么为什么这样却能工作呢?其次,为什么它要对/xyz/
进行测试,而这个测试并没有返回任何东西(没有返回语句)?除非JavaScript有一些我不知道的巧妙属性(这是可能的,我自认为在JS方面相当擅长,能够解释我遇到的大部分代码,然而,并不意味着我能够像约翰·雷西格那样居住在同一座似珠峰般巨大的山上)。
对于那些好奇的人,这是约翰·雷西格网站上完整的未经编辑的代码John Resig Simple Javascript Inheritance: