四年前,悉尼程序员Dmitry Baranovskiy在他的个人博客更新了这样一篇博文:《So, you think you know JavaScript?》 不久便在国内引发围观,俨然成了一个老生常谈的话题。
准备好了吗?如下几段代码,是在其基础上新增了几道,相信不少JSER都很眼熟。那么对于未曾见过的同学,它会帮助你对javascript核心有更深层的了解,尽管它们都偏离于实际应用之外。试着去分析他们的最终结果,在这之前切记不要用调试工具,否则就丧失了其意义。
A:不要以为它是易语言
var 弹框 = alert, 函数 = Function; function 贤心(行为){ 弹框(‘此人正在‘+ 行为); }; 函数(‘贤心("发呆")‘)();
B:
if (!("a" in window)) { var a = 1; } alert(a)
C:
var a = 1, b = function a(x) { x && a(--x); }; alert(a);
D:
function a(x) { return x * 2; } var a; alert(a);
E:
function b(x, y, a) { arguments[2] = 10; alert(a); } b(1, 2, 3);
F:
function a() { alert(this); } a.call(null)
G:
console.log("Why am I a " + typeof + "");
H:
var \u1000 = { \u1001: ‘foo‘, \u1011: ‘bar‘ }; console.log( \u1000.\u1001 ); console.log( \u1000.\u1011 );
I:
console.log(++[[]][+[]]);
J:
var fn = function(){ return false; }; (function(){ console.log(fn()); if(false){ function fn(){ return true; } } })();