javascript - if (function f(){})中function f(){}为何会是true?
本文介绍了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屋!
查看全文