1.undefined,null,0,"" 这四个值转换为逻辑值时是false,其他无论简单类型值,对象或者函数转换过来都是true
2.如图
第一个是“声明了一个变量,给变量赋值(赋的是一个函数),然后又更改了变量的值(同样也是因为变量是以值保存,而不是对象那种以引用保存的方式)
第二个是”声明了一个函数,定义里里面的规则,然后把这个名字的函数又声明了一遍,定义了不同的规则“
造成第二个alert成这样的原因是,一段程序执行的时候,会先把定义语句抓出来先执行,完了才去执行其他代码,所以这个函数被第二个定义给覆盖掉了。
所以,当函数被定义两遍时,后者会覆盖前者;(同样也是因为声明的两个func只是两个指针,指向的都是同一个原型)
这也是javascript的预编译