js面向对象编程:if中可以使用那些作为判断条件呢?
来源:互联网 发布:淘宝健身教练 编辑:程序博客网 时间:2024/05/16 06:16
在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢?
例如如何几行,只是少了一个括号,真假就完全不同,到底表示什么含义呢
var obj={}; obj.Funtext=function(){}; if(obj.Funtext) { alert("true obj.Funtext;"); } else { alert("false obj.Funtext"); } obj.Funtext=function(){}; if(obj.Funtext()) { alert("true obj.Funtext();"); } else { alert("false obj.Funtext()"); }1第一类已定义的变量但未赋值在if中认为是假
例如:
var t; if(t) { alert("true 已定义未赋值"); } else { alert("false 已定义未赋值"); }
2第二类已定义的变量,赋值为空字符串在if中认为是假,赋值为其他的字符串,也就是是字符串中有字符就认为是真
例如:
var t; t=""; if(t) { alert("true t='';"); } else { alert("false t=''"); }
if判断是假
再例如:
var t; t=" "; if(t) { alert("true t=' ';"); } else { alert("false t=' '"); } t="111"; if(t) { alert("true t='111';"); } else { alert("false t='111'"); }if判断是真,也就是对于字符串类型,只要有字符,即使是空格字符if判断也为真。
3第三类已定义的变量,赋值为true在if中认为是真,赋值为false,则为假,这和其他语言中bool的类型的变量是一样的。
例如:
var t; t=false; if(t) { alert("true t=false;"); } else { alert("false t=false;"); } t=true; if(t) { alert("true t=true;"); } else { alert("false t=true;"); }
4第四类已定义的变量,赋值为0在if中则为假,其他数值认为是真,这和c语言中数值的类型的变量是一样的。
例如:
var t; t=0; if(t) { alert("true t=0;"); } else { alert("false t=0;"); } t=0.0; if(t) { alert("true t=0.0;"); } else { alert("false t=0.0;"); }测试发现不管是0,还是0.0都是假
var t; t=2; if(t) { alert("true t=2;"); } else { alert("false t=2;"); }
发现非0是都是真
5第五类js中的特殊值null,undefined,都是假
var t=null; if(t) { alert("true t=null;"); } else { alert("false t=null;"); } t=undefined; if(t) { alert("true t=undefined;"); } else { alert("false t=undefined;"); }由于在js中未定义的变量默认值是undefined,因此这也就就解释了第一类情况
6第六类已定义的函数,根据调用方式又分为两种
第一种:不带括号的,如果定义了就是真,没有定义会报错
function testfunction(){} if(testfunction) { alert("true testfunction;"); } else { alert("false testfunction;"); }第二种:带括号的,其实相当于调用函数,自然是根据函数的返回值判断真假
例如:
function testfunction(){} if(testfunction()) { alert("true testfunction;"); } else { alert("false testfunction;"); }是假,是因为,函数如果没有定义返回值值,则返回值是undefined
7第七类已定义的对象,未赋值时在if中则为假,赋值后是真。
例如:
var obj; if(obj) { alert("true obj;"); } else { alert("false obj;"); }其实由于在js中变量在没有赋值时是没有类型的,因此和第一种情况是一样的。
但在赋值后,就会变成真,例如:
var <span style="font-family: Arial, Helvetica, sans-serif;">obj</span>; obj={}; if(obj) { alert("true obj={};"); } else { alert("false obj={};"); }
8第八类已定义的对象的属性字段,和单独的变量是一样的,例如数值型为0时是假,其他为真,字符串型是为空值时是假,其他为真。
例如
var obj={}; obj.Text=""; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text="Text"; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text=0; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text=1; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); }
9第九类已定义的对象的方法,和单独的函数是一样的,
不加括号是如果没定义就是假,
var obj={}; obj.Funtext=function(){}; if(obj.Funtext) { alert("true obj.Funtext;"); } else { alert("false obj.Funtext"); } if(obj.Funtext1)//未定义属性,也没有定义方法 { alert("true obj.Funtext1;"); } else { alert("false obj.Funtext1"); }
加了括号相当于调用方法,就是根据返回值判断真假。
var obj={}; obj.Funtext=function(){}; if(obj.Funtext()) { alert("true obj.Funtext();"); } else { alert("false obj.Funtext()"); } obj.Funtext2=function(){ return "ff"}; if(obj.Funtext2()) { alert("true obj.Funtext2();"); } else { alert("false obj.Funtext2()"); }
可以看到在js中可以在if中作为判断的类型很多,但最终都可以看做这些类型的变形。只要掌握了这些最基本的,就可以灵活运用if判断了。
最基本是null,undefined,if判断都是假;对于数值类型,0是假,其他为真;对于字符类型空字符串是假,其他为真,对于方法属性,如果定义了就是真,否则就是假,其他所有都可以看做是这些的变相应用。
2 1
- js面向对象编程:if中可以使用那些作为判断条件呢?
- js面向对象编程:if中可以使用那些作为判断条件呢?
- js面向对象编程:if中可以使用那些作为判断条件呢?
- javascript:if中可以使用那些作为判断条件
- JS中对象和变量是否可以作为if选择结构的条件?
- js中if条件判断
- JavaScript 哪些值可以作为If 判断条件
- js中if的条件判断
- 在条件判断switch()语句中,可以使用哪些基本类型呢?
- js在if else语句中var的变量在条件语句外可以使用吗?
- js 中 的 if使用条件
- 在javascript中,哪些值能作为if的条件呢
- 赋值语句作为if的判断条件
- JS中面向对象编程
- shell中条件判断if
- shell中IF条件判断
- SQL语句Where中使用别名作为判断条件
- SQL语句Where中使用别名作为判断条件
- m_pConnection->Open和m_pRecordset->Open
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Jquery 大纲
- 《Scrum精髓》审校后记:关于Acceptance Test
- 初探C++运算符重载学习笔记<1>
- js面向对象编程:if中可以使用那些作为判断条件呢?
- Linux tcpdump命令详解
- 角色查询功能
- 斯诽呈霖特鼻镜谈涌镜粮挛霖幕也
- SQL Server 2008 - 表全部清空
- 【NGUI学习之一】NGUI所见即所得之UIRoot
- 理解HTTP session原理及应用
- 陇南武都人流哪种方法好
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第10章 认识与学习Bash 笔记