输出结果为什么是undefined。主要考察的是哪方面的知识?
泻药,楼上已回答了的
这是声明提升,hositing
差不多就是在一个作用域内,你在中间var声明了一个变量什么的,实际上会把var xx提升到最前面去,比如在你的代码了,实际上就是
var foo=123;
(function(){
var foo;//var声明被提前了
console.log(foo);//所以这里不会访问到外部的123,而是因为访问内部的foo,但还没到赋值阶段,所以undefined
foo = foo || 'name';
})()
百度搜:js 变量提升
Google搜:js variable hoisting
大概就是说var所定义的变量会提升到作用域最开始。
// your code
var a = 1;
var fn = function () {};
JS引擎在解析运行时会变成:
var a, fn;
// your code
a = 1;
fn = function () {};
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
题主需要了解
变量声明提升
的相关概念。