node.js - javascript中关于变量是否声明的问题。
PHP中文网
PHP中文网 2017-04-11 11:49:00
[JavaScript讨论组]

我在我自己写的webstorm里面写的代码,具体环境是javascript还是node.js我也不是很清楚,不知道和这个有没有关系。以下是我的代码:

var fullname ='John Doe';
var obj ={
    fullname:'Colin Ihrig',
    prop:{
        fullname:'Aurelio De Rosa',
        getFullname:function(){
            return this.fullname;
        }
    }
};
//console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());

然后输出的结果是undefined;



然后如果我把var去掉的话,就像这样。

 fullname ='John Doe';
var obj ={
    fullname:'Colin Ihrig',
    prop:{
        fullname:'Aurelio De Rosa',
        getFullname:function(){
            return this.fullname;
        }
    }
};
//console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());
然后这样输出的就是john Doe;
求大神解答。

图片如下:

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
ringa_lee

在全局作用域下,使用 var a = xx 等价于 window.a = xx,同理:

var test = obj.prop.getFullname;
// 等价于
window.test = obj.prop.getFullname;

这样方法中 this 指向 window,最终调用的是 window.fullname

你写的两段代码在浏览器环境中,执行结果一样,都是 john Doe
在 node 环境中,var 在全局定义只限于当前模块中,去除 val 就是 global 变量了。

ringa_lee

你骗人,两个答案都是一样的,我看了一样没区别,跑了几遍也没区别,都是John Doe。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号