javascript - self 评估 Javascript

标签 javascript

请帮助我在 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/

相关文章:

javascript - Material UI React - 找不到模块 : Can't resolve '@material-ui/pickers'

Javascript 子类化。设置构造函数属性

javascript - 为什么php ajax没有给出任何响应?

javascript - 如何在 React Redux 应用程序中打开和关闭内联对话框

javascript - 如何在javascript中使用正则表达式从数组中删除数字

javascript - 更新元素以显示 "contentEditable"元素的实时变化

javascript - react 。如何将 setState 中的键与数组索引一起使用?

javascript - 用Javascript模拟touchmove惯性

javascript - Cytoscape.js - 突出显示所选节点的所有路径

javascript - <图片> src(事件源)