作用域问题求解答!!!

heyly10 2017-07-03 09:06:01
var temp = new Date();
function f(){
console.log(temp);
if(false){
var temp = "hello";
}
}
f();

函数中的声明语句难道会执行吗,为什么结果是undefined
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
heyly10 2017-07-04
  • 打赏
  • 举报
回复
引用 2楼天际的海浪 的回复:

var 有声明提升的特性,不论var写在一个函数的哪里,都会自动提升到这个函数内的最前面。如:
function myname() {
	for (.............) {
		if (.....) {
			var n = 123;
		}
	}
}
在js解析时就会变成下面的形式
function myname() {
	var n;
	for (.............) {
		if (.....) {
			n = 123;
		}
	}
}

懂了,
heyly10 2017-07-04
  • 打赏
  • 举报
回复
引用 1楼hubin_js 的回复:
先进行预解释啊 函数里面var temp 只有声明没定义啊 所以输出的是undefined
懂了,谢谢
天际的海浪 2017-07-03
  • 打赏
  • 举报
回复

var 有声明提升的特性,不论var写在一个函数的哪里,都会自动提升到这个函数内的最前面。如:
function myname() {
	for (.............) {
		if (.....) {
			var n = 123;
		}
	}
}
在js解析时就会变成下面的形式
function myname() {
	var n;
	for (.............) {
		if (.....) {
			n = 123;
		}
	}
}

hubin_js 2017-07-03
  • 打赏
  • 举报
回复
先进行预解释啊 函数里面var temp 只有声明没定义啊 所以输出的是undefined

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧