使用var重新声明对象

 violalal_134 发布于 2023-02-05 10:21

我试图了解下面的代码中发生了什么,有人可以帮忙吗?我正在使用node.js,我试图覆盖本机控制台(做其他事情).

这很好用:

var output = console;
console = {a: 2};

output.log(console)

而这不是:

var output = console;
var console = {a: 2};

output.log(console)

我得到"无法调用未定义的方法'日志'".

1 个回答
  • 在引擎执行函数代码(或全局上下文)之前,它会查找所有变量声明,并使用值定义变量undefined.这也称为可变吊装.

    因此以下代码:

    var output = console;
    var console = {a: 2};
    
    output.log(console)
    

    相当于:

    var output;
    var console;
    output = console;
    console = {a: 2};
    
    output.log(console)
    

    在线output = console;,console仍然有价值undefined.

    注意:只有在模块中执行代码或全局范围以外的任何其他代码时才会发生这种情况.在全局范围内,var console;声明将被忽略,因为console它已在全局范围内定义.


    如果要创建局部console变量引用全局console对象,则必须通过全局对象(global在Node.js和window浏览器中)引用它.例如:

    var output = global.console;
    var console = {a: 2};
    
    output.log(console)
    

    2023-02-05 10:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有