javascript - js 函数 输出结果
伊谢尔伦
伊谢尔伦 2017-04-11 09:20:25
[JavaScript讨论组]


输出结果为什么是undefined。主要考察的是哪方面的知识?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
大家讲道理

题主需要了解变量声明提升的相关概念。

PHP中文网

相当于

var foo = 123;
(function(){
var foo;
console.log(foo);
foo = foo || 'name'
}())
天蓬老师

泻药,楼上已回答了的

这是声明提升,hositing

差不多就是在一个作用域内,你在中间var声明了一个变量什么的,实际上会把var xx提升到最前面去,比如在你的代码了,实际上就是

var foo=123;
(function(){
    var foo;//var声明被提前了
    console.log(foo);//所以这里不会访问到外部的123,而是因为访问内部的foo,但还没到赋值阶段,所以undefined
    foo = foo || 'name';
})()
ringa_lee

百度搜:js 变量提升

Google搜:js variable hoisting

大概就是说var所定义的变量会提升到作用域最开始。

// your code
var a = 1;
var fn = function () {};

JS引擎在解析运行时会变成:

var a, fn;
// your code
a = 1;
fn = function () {};
PHPz

变量提升,示例

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

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