Javascript 请解释CryptoJS的声明
通过一些恶意软件,我看到CryptoJS声明如下:Javascript 请解释CryptoJS的声明,javascript,Javascript,通过一些恶意软件,我看到CryptoJS声明如下: var CryptoJS = CryptoJS || function(u, p) { var d = {}, l = d.lib = {}, s = function() {}, ....stackoverflow doesnt allow me to paste all of the code... _createHmacHelper: function(a) {
var CryptoJS = CryptoJS || function(u, p) {
var d = {},
l = d.lib = {},
s = function() {},
....stackoverflow doesnt allow me to paste all of the code...
_createHmacHelper: function(a) {
return function(b, e) {
return (new n.HMAC.init(a,
e)).finalize(b)
}
}
});
var n = d.algo = {};
return d
}(Math);
我不明白的是这句话:
var CryptoJS=CryptoJS | |函数(u,p).
为什么不简单地:
var CryptoJS=function(u,p).
它通常被称为polyfill定义,在javascript中非常常见。如果以前的声明已经定义了CryptoJS
,那么它将跳过|
之后的内容,即定义。它被称为多边形填充。关键是,如果之前的声明已经定义了它,那么它将短路并跳过polyfill定义。