Node.js --- require 中的全局变量

obj.js

var S

function init(value) {
    S = {
        s: value
    }
}

module.exports = {
        S: S,
        init: init
}

index.js

var obj = require('./obj')

obj.init('Hi')

console.log("index.js: " + obj.S)

结果:

node index.js

index.js: undefined    // 为什么呢,明明已经初始化了

=====================================

参考此文换一种方式:
https://www.yangyang.cloud/blog/2016/06/28/nodejs-circular-dependencies/

obj.js

const Module = module.exports;

var S

function init(value) {
    S = {
        s: value
    }
}

Module.S = S
Module.init = init

index.js

var obj = require('./obj')

obj.init('Hi')

console.log("index.js: " + obj.S)

结果:

node index.js

index.js: undefined    // 为什么呢,明明已经初始化了

=====================================

obj.js

class C {
        constructor() {
                this.S = null
        }

        init(value) {
                this.S = { s: value }
        }
}

var obj = new C()
obj.init('Hello')
console.log(obj.S.s)

module.exports = obj

index.js

var obj = require('./obj')

obj.init('Hi')

console.log("index.js: " + obj.S.s)

结果:

node index.js

obj.js: Hello
index.js: Hi     // 全局变量修改成功

看来全局变量必须明确为引用型才可以被改变

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(function (root, factory, undef) { if (typeof exports === "object") { // CommonJS module.exports = exports = factory(require("./core"), require("./x64-core"), require("./lib-typedarrays"), require("./enc-utf16"), require("./enc-base64"), require("./enc-base64url"), require("./md5"), require("./sha1"), require("./sha256"), require("./sha224"), require("./sha512"), require("./sha384"), require("./sha3"), require("./ripemd160"), require("./hmac"), require("./pbkdf2"), require("./evpkdf"), require("./cipher-core"), require("./mode-cfb"), require("./mode-ctr"), require("./mode-ctr-gladman"), require("./mode-ofb"), require("./mode-ecb"), require("./pad-ansix923"), require("./pad-iso10126"), require("./pad-iso97971"), require("./pad-zeropadding"), require("./pad-nopadding"), require("./format-hex"), require("./aes"), require("./tripledes"), require("./rc4"), require("./rabbit"), require("./rabbit-legacy")); } else if (typeof define === "function" && define.amd) { // AMD define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./enc-base64url", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory); } else { // Global (browser) root.CryptoJS = factory(root.CryptoJS); } }(this, function (CryptoJS) { return CryptoJS; }));解释这段代码
最新发布
06-03

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值