Skip to content

Day10:写出执行结果,并解释原因 #46

@Genzhen

Description

@Genzhen
Collaborator
var x=1;
if(function f(){}){
    x += typeof f;
}
console.log(x)
// 写出执行结果,并解释原因

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案
欢迎大家在下方发表自己的优质见解
二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。

Activity

Genzhen

Genzhen commented on Jun 22, 2020

@Genzhen
CollaboratorAuthor

答案
1 undefined

解析
条件判断为假的情况有:0,false,'',null,undefined,未定义对象。函数声明写在运算符中,其为true,但放在运算符中的函数声明在执行阶段是找不到的。另外,对未声明的变量执行typeOf不会报错,会返回undefined

yanwenxi

yanwenxi commented on Feb 22, 2021

@yanwenxi

结果应该是NaN吧,1+undefined=NaN

Genzhen

Genzhen commented on Feb 22, 2021

@Genzhen
CollaboratorAuthor

结果应该是NaN吧,1+undefined=NaN

typeof 返回的是字符串哦

liuyuan22

liuyuan22 commented on Mar 17, 2021

@liuyuan22

放在运算符中的函数声明在执行阶段是找不到的

理解这个意思,但是这种行为是写在规范里的么?找了一圈没找到,有没有什么出处?

DakerHub

DakerHub commented on May 6, 2021

@DakerHub

没有10年脑血栓应该写不出这种代码

wind8866

wind8866 commented on Jun 30, 2021

@wind8866

函数声明写在运算符中,其为true,但放在运算符中的函数声明在执行阶段是找不到的。

@Genzhen 不太理解这句话的意思。

我测试在严格模式下,chrome 执行结果为1function
个人理解,函数声明会被提升到所有代码执行前,所以在整个代码任何地方都能访问到f。

luzhaopan

luzhaopan commented on Jan 6, 2023

@luzhaopan

1object
image

mqupupup

mqupupup commented on May 20, 2025

@mqupupup

结果应该是NaN吧,1+undefined=NaN

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @liuyuan22@yanwenxi@Genzhen@DakerHub@luzhaopan

        Issue actions

          Day10:写出执行结果,并解释原因 · Issue #46 · lgwebdream/FE-Interview