This topic created in 4757 days ago, the information mentioned may be changed or developed.
看到一代码,无覆盖载入window.onload:
windows.onload = function(){
alert(1);
}
windows.onload = (window.onload||function(){}).after(function(){
alert(2);
})
第二个逻辑里的:
windows.onload = (window.onload||function(){})...
这里为什么要判断function(){}?这个是什么意思?什么情况下会返回false?
12 replies • 1970-01-01 08:00:00 +08:00
 |
|
1
chu1337 May 30, 2013 1
js 不是懂太多... 这个的意思应该是如果window.onload 不为空就把window.onload 赋给window.onload, 如果为空就把一个空的function 赋给window.onload。
|
 |
|
3
Mutoo May 30, 2013 1
好眼熟,这不是腾讯前端发的那个日志吗……
1) 在javascript里 0, null, undefined 都返回false
2) || 条件语句返回从左往右第一个不为false的对象
所以 windows.onload = (window.onload||function(){}) 的意思是:如果window.onload未定义,就取 function(){} (空函数)
|
 |
|
4
chu1337 May 30, 2013
@ andybest 你可以测试下: var a; b = (a || function(){alert(1)}) b()
|
 |
|
7
Mutoo May 30, 2013 1
@ andybest 哈哈,js里面,还有呢,取两数较小数可以这样写 a<b&&a||b
|
 |
|
8
zhttty May 30, 2013
首先你得windows是错的; 改了window则返回1;
|
 |
|
10
reyrey May 30, 2013
那为什么后面缀上.after 啥的
|
 |
|
11
ijse May 30, 2013
嗯,, 前端 AOP。
把window.onload赋值为function(){}, 是为了使用之前添加到Function.prototype的before(), after()
|