js中, 用变量或对象作为if或其他条件的表达式

源: 因为js是弱语言, 就体现在js的变量是弱类型的, 在js中所有变量类型声明都用var, 而在其他强类型语言中,如java/c,必须有强制类型转换和类型检查才能编译通过等,

但是: 弱语言也有优势: 起码在写js条件判断表达式时可以直接用变量或者对象来判断

来人, 上代码:

// 代码很简洁, 先讨论当变量a为不同值时的条件表达式结果
	var a; // 只声明变量 
	if (a) {
			alert('true');
		} else {
			alert('false');
		}

  

 

 

a的值 说明 表达式 if(a)的结果: 
var a;  只声明不赋值  false
 a = '' || a = "" || a = null || a = undefined  当a为空串或null或undefined时,评估结果为false  false
 a = 'somevalue', ...  当为a赋值后, 评估结果true  
 a = ' ' || a = " "  * a为空格, 空格也是一个字符, 评估结果为true  
 a = 0 || a = 0.0  * 当a为数值0或0.0,0.00,评估结果为false,其他数值一律为true  
 a = f  当a为函数对象, 且不带括号, 该函数对象定义了评估结果就为true,否则为false   
 a = f()  当a为函数对象, 且带括号, 则先执行函数, 按照函数的返回结果来作为评估结果, 若无返回结果: 则为false,因为默认返回undefined  
a = obj.pro1, a = obj.f1() 当a为对象的属性或方法时, 按照a为单独带队属性或方法时的一样进行评估  
posted @ 2017-11-22 15:38  果感  阅读(6146)  评论(0编辑  收藏  举报