javascript - if (function f(){})中function f(){}为何会是true?

查看:118
本文介绍了javascript - if (function f(){})中function f(){}为何会是true?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

刷简书碰到一篇讲面试题的文章http://www.jianshu.com/p/55e54345829a

var x = 1;
if (function f() {}) {
    x += typeof f;
}
x;
A. 1
B. "1function"
C. "1undefined"
D. NaN

我选的A,判断是function f(){}没有明显的return,那么函数默认返回undefined,if语句根本不会执行。
答案以及浏览器执行结果是C. "1undefined",if语句执行了。
function f(){}为何会转换成true?烦请哪位能详细解释下或者给个说明的文章。

解决方案

因为function f(){}是个对象 , if的括号里面放的东西都会转换成true或者false .
上面如果写成 :

var x = 1;
if (function f() {}==true) {
    x += typeof f;
}
x;

x就等于1了 , 因为function f(){}不等于true嘛 , 但是只有function f()的话 , if会把它强制转化成true 或者 false :

!!(function f(){})

这样得到的就是一个true了

这篇关于javascript - if (function f(){})中function f(){}为何会是true?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆