社区
JavaScript
帖子详情
js中有关作用域的一个小问题
YUHUI01
2017-12-27 07:18:30
代码如下
<script>
alert(fn1);
if(true){
function fn1(){
alert(123);
}
}
</script>
请问,为什么弹出来的提示是Undefined的?
能不能讲解一下
...全文
188
3
打赏
收藏
js中有关作用域的一个小问题
代码如下 alert(fn1); if(true){ function fn1(){ alert(123); } } 请问,为什么弹出来的提示是Undefined的? 能不能讲解一下
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
py-python
2017-12-28
打赏
举报
回复
因为alert(fn1);中的fn1 没有定义呀
遇见y2021
2017-12-28
打赏
举报
回复
函数是从上到下执行代码,你把alert(fn1),写在第一行,fn1是一个未定义的变量,所以值为undefiend,如果你把他加个括号,写成alert(fn1()),因为fn1()这个函数写在if的里面,会报错,像二楼所说,会报错,你如果把alert(fn1)写到最后一行,会弹出fn1这个函数,如果写成alert(fn1()),先运行fn1这个函数,如果fn1这个函数有返回值,会弹出返回值,如果没有,会弹出undefined <script> if(true){ function fn1(){ alert("123") var m=3 return m;//如果这行注释先弹出123,再弹出undefined,不注释先弹出123,再弹出3 } } alert(fn1()); </script>
天际的海浪
2017-12-27
打赏
举报
回复
因为函数声明提升特性只会在函数所在的语句区块{}内进行提升,不会提升到语句区块{}外 <script> alert(fn1); //输出undefined if(true){ alert(fn1); //输出function fn1..... function fn1(){ alert(123); } } </script>
相关推荐
JS
深度揭秘第二章-函数深入
1、自执行函数原理 2、模块化开发 3、惰性函数 4、箭头函数 5、函数参数默认值及传递方式 6、reset参数 7、块级
作用域
8、堆栈概念 9、垃圾回收机制 10、执行上下文 11、变量对象 12、
作用域
原理 13、this原理 14、call、apply、bind方法详解 15、闭包的表面现象、闭包的真正原理、闭包的形式、闭包的应用 16、递归、尾递归、递归应用、深拷贝
194. 后台放到
作用域
中
的在
js
中
获取 (
js
引入的小
问题
)
2019独角兽企业重金招聘Python工程师标准>>> ...
一些
js
小
问题
探讨一些
js
在
js
中
,如
js
,for这种块级
作用域
中
的变量可以被外界访问到 for(var i=0;i<2;i++){ for(var i=0;i<3;i++){} } console.log(i);//4 console.log("i" in window);//true 块级
作用域
中
的function会被隐式提升为let声明 if(true){ var i=1; function i(){}; var i=2; }
关于
JS
作用域
的一点小
问题
var fauxConstant = "123"; function badFunction() { fauxConstant = "456"; } function goodFunction() { var fauxConstant = "456"; } function te...
消灭JavaScript怪兽第二季(合集):面向对象玩转
JS
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,常用于网页客户端编程,使网页在客户端浏览器
中
,实现更多地动态功能,表现出更加丰富的视觉效果。本课程是<<消灭JavaScript怪兽>>系列课程的第二季课程。主要包含对象的创建、原型链、闭包、上下文、
作用域
、继承等知识点。
发帖
JavaScript
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
8.7w+
社区成员
22.4w+
社区内容
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2017-12-27 07:18
社区公告
暂无公告