```js var x=1; if(function f(){}){ x += typeof f; } console.log(x) // 写出执行结果,并解释原因 ``` --- > 每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 > 欢迎大家在下方发表自己的优质见解 > 二维码加载失败可点击 [小程序二维码](http://img-static.yidengxuetang.com/wxapp/qr-day/qid-786.png) <h3 align="center">扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。</h3> <div align="center"> <img src="http://img-static.yidengxuetang.com/wxapp/qr-day/qid-786.png" width="260px"> </div>
Activity
Genzhen commentedon Jun 22, 2020
答案
1 undefined
解析
条件判断为假的情况有:0,false,'',null,undefined,未定义对象。函数声明写在运算符中,其为true,但放在运算符中的函数声明在执行阶段是找不到的。另外,对未声明的变量执行typeOf不会报错,会返回undefined
yanwenxi commentedon Feb 22, 2021
结果应该是NaN吧,1+undefined=NaN
Genzhen commentedon Feb 22, 2021
typeof 返回的是字符串哦
liuyuan22 commentedon Mar 17, 2021
理解这个意思,但是这种行为是写在规范里的么?找了一圈没找到,有没有什么出处?
DakerHub commentedon May 6, 2021
没有10年脑血栓应该写不出这种代码
wind8866 commentedon Jun 30, 2021
@Genzhen 不太理解这句话的意思。
我测试在严格模式下,chrome 执行结果为
1function
。个人理解,函数声明会被提升到所有代码执行前,所以在整个代码任何地方都能访问到f。
luzhaopan commentedon Jan 6, 2023
1object

mqupupup commentedon May 20, 2025
好问题,但是if条件判断里相当于加了个立即执行的函数表达式,他只在条件判断的上下文里存在。typeof f会返回'undefined',这里是字符串拼接了因此返回1undefined