请帮助我在 javascript 中理解它是如何工作的?
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
var confirmationMessage = 'Are you sure to leave the page?'; // a space
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
});
我理解脚本的其他部分,但不理解 (e || window.event).returnValue
如何评估它?这是否意味着如果 e
为真,则其属性 returnValue
将被设置,否则它将使用 window.event
?
注意:因为我不知道这种 javascript 编码模式是如何命名的,所以请指导我使用正确的标题
最佳答案
意思是:
e.returnValue = confirmationMessage;
如果不是e
window.event.returnValue.confirmationMessage;
考虑这个片段的输出:
var a = {};
var b = undefined;
var c = {};
(b || a).first = 'First!';
(c || a).second = 'Second!';
console.log(a);
console.log(b);
console.log(c);
Object { first: "First!" } // <-- a
undefined // <-- b
Object { second: "Second!" } // <-- c
在行 (b || a).first = 'First!';
中,b 的计算结果为假,a 被计算为真,所以 a.first
已定义。
在 (c || a).second = 'Second!';
行中,c 求值为真,因此定义了 c.second
。注意 a.second
没有定义,因为 JavaScript 的 ||短路。
您发布的特定代码之所以存在,是因为 Internet Exploder 的 Explorer 的旧版本。
关于javascript - self 评估 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802253/