我在这里遇到了一些以前从未见过的语法:http://appendto.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/
(function( skillet, $, undefined ) {
//Private Property
var amountOfGrease = "1 Cup";
//Public Method
skillet.toString = function() {
console.log( skillet.quantity + ' ' +
skillet.ingredient + ' & ' +
amountOfGrease + ' of Grease' );
console.log( isHot ? 'Hot' : 'Cold' );
};
}( window.skillet = window.skillet || {}, jQuery ));
据我了解,作者正在检查 skillet
对象的全局作用域,如果存在,则将其传递到 IIFE 中,我只是有点不清楚传递 的值>window.skillet = window.skillet
是。
作业评估作业的值(value):
var x = 1;
var y = x = x;
console.log(y); //1
console.log(y = (x = x)); true
但是由于如果未定义,window.skillet
将会是错误的,为什么作者不简单地传递这个:
( window.skillet || {}, jQuery )
最佳答案
作者的做法将确保 window.skillet
不再是 undefined
(如果它本来就是这样的话)。然后,该值被传入。您建议的方式最终将传入相同的值,但是 window.skillet
仍然是未定义的。
作者可以执行以下操作以使其更具可读性:
// preceding code....
if(!window.skillet) {
window.skillet = {};
}
}( window.skillet, jQuery ));
关于javascript - 赋值作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807357/