debug

华不实 2018-05-02 05:49:04
alert(n); //undefined
fn(); // 错误
if(false){
var n = 10;
function fn(){
alert('hello');
}
}

大神快来。。。。。。。为什么fn();错误
...全文
353 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
华不实 2018-05-03
  • 打赏
  • 举报
回复
这样说我就明白了,十分的感谢、、
天际的海浪 2018-05-02
  • 打赏
  • 举报
回复
通俗的说就是在ie11或者新版本Chrome浏览器中,在一个大括号{}内定义的函数无法在这个大括号{}外调用。
天际的海浪 2018-05-02
  • 打赏
  • 举报
回复
引用 2 楼 qq_42119915 的回复:
没懂,说的太专业抽象了,感觉跟我问的不着调。。。
通俗的说就是在ie11或者新版本Chrome浏览器中,在一个大括号{}内定义的函数无法在这个大括号{}外就调。
华不实 2018-05-02
  • 打赏
  • 举报
回复
我用chrome谷歌的
华不实 2018-05-02
  • 打赏
  • 举报
回复
没懂,说的太专业抽象了,感觉跟我问的不着调。。。
天际的海浪 2018-05-02
  • 打赏
  • 举报
回复
因为从ie11开始有了块级作用域。如新增的let就是声明块级作用域的变量,同时function声明的函数的作用域也改变成了块级。 函数声明提升的行为也只能在当前块级作用域内提升。你在块级作用域外就调用不了了。 如果这个代码在ie10-浏览器中执行,因为没有块级作用域就可以正常执行

87,963

社区成员

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

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