在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
学习PowerShell时发现:
试着猜一下结果数组是什么样的:
$a = 1, 2
$b = 1, 2+3
$c = 1, 2*3
答案:
1, 2
1, 2, 3
1, 2, 1, 2, 1, 2
哎哟!它动摇了我对PowerShell及其开发人员的信心。
其他回答
回想起来,FORTRAN的计算goto是相当奇怪的。维基百科告诉我一些基础知识胜过它。
另一个著名的最爱是Algol 60的名称参数调用传递。
我有点纠结:
1;
在perl中,模块需要返回true。
在JavaScript中,void不是关键字,不是类型声明,也不是变量名,也不是函数,也不是对象。Void是一个前缀操作符,类似于-、——、++和!你可以给任何表达式加上前缀,这个表达式的值将是undefined。
它经常被用在bookmarklet和内联事件处理程序中,比如下面这个比较常见的例子:
<a href="javascript:void(0)">do nothing</a>
在这个例子中使用它的方式使它看起来像一个函数调用,而实际上它只是一种获得原始未定义值的过于聪明的方法。大多数人并没有真正理解JavaScript中void的真正本质,这可能会导致许多讨厌的bug和奇怪的意想不到的事情发生。
不幸的是,我认为void操作符是在JavaScript中获得未定义值的唯一真正保证的方法,因为未定义,正如在另一个回答中指出的,是一个可以重新赋值的变量名,而{}。a可以被Object.prototype.a = 'foo'打乱
更新:我想到了另一种生成undefined的方法:
(function(){}())
嗯,有点啰嗦,返回“undefined”是它的目的就更不清楚了。
在C。
int;
(&a)[0] = 10;/*将值10赋给*/
[0]等于*(&a +0)得到*(&a)也就是a。
在早期版本的Visual Basic中,没有“Return”语句的函数只是“Return None”,没有任何编译器警告(或错误)。
这导致了最疯狂的调试会话,那时我必须每天处理这种语言。