Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请解释CryptoJS的声明_Javascript - Fatal编程技术网

Javascript 请解释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) {

通过一些恶意软件,我看到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) {
            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定义。