首页 > 解决方案 > 请解释 CryptoJS 的声明

问题描述

所以,通过一些恶意软件,我看到 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 || function(u, p)...

为什么不简单:

var CryptoJS = function(u, p)...

标签: javascript

解决方案


它通常被称为polyfill定义,在 javascript 中很常见。如果先前的声明已经定义CryptoJS,那么它将跳过后面的||内容,即定义。


推荐阅读