||和 JavaScript 中的消息

|| and onmessage in javascript

本文关键字:消息 JavaScript      更新时间:2023-09-26

我正在阅读一个开源项目,它有一个这样的js文件

var pipe = function(source, listeners){
    source.onmessage = function onmessage(msg){
           //.. do something ..
    };
    return {
      //.. something ...
    };
  }(nativeWindow || appjs, {});

(nativeWindow || appjs )它们都是对象是什么意思?

这是否意味着为他们俩调用了这个函数?

或者它正在合并这两个对象?

这是.onmessage是标准的东西,比如alert()还是window?我所说的标准的意思是,这个.onmessage函数的幕后发生了什么,还是就像简单的函数一样?

谢谢

如果nativeWindow的计算结果为false(例如,如果它是未定义的),则appjs作为源代码传入;否则nativeWindow作为源代码传入。然后,作为源传入的任何对象的属性 onmessage 将设置为 onmessage 函数

来自 MDN :

expr1 || expr2

如果可以转换为 true,则返回 expr1;否则,返回 expr2.因此,当与布尔值一起使用时,||返回 true,如果 操作数为真;如果两者都为假,则返回假。

在此特定情况下,定义其值的第一个值作为参数传递。

.onmessage 是它在 pipe 函数中分配的任何内容。它只是source对象的普通属性。

javascript 中的 ||&& 返回一个值。这意味着; nativeWindow OR appjs作为表达式的返回值传入;返回最后一个计算的表达式。如果nativeWindow是一个虚假(空值、未定义值等)值,则 appjs 将被传入。如果nativeWindow是直通的(例如一个对象),它就会被传入。想想this OR that.如果两个值都是假的,则右侧的值仍将传入。阅读更多关于 ||和&&这里:http://www.grauw.nl/blog/entry/510

||OR运算符。如果左手评估为真,它也会短路。因此,它所做的是为函数提供 nativeWindow 的值或appjs如果nativeWindow是假的。

更详细的内容是:

var pipe = function()...;
if(nativeWindow) {
    pipe = pipe(nativeWindow);
} else {
    pip = pipe(appjs);
}
(nativeWindow || appjs, {}) = (source, listeners) 

它们是传递的参数

nativeWindow  || appjs 

表示如果 nativeWindow 未定义或 falsy 取 appjs 的值

source.onmessage  

onmessage 是对象的属性(作为 nativeWindow || appjs 传递),它在您的情况下包含一个函数