JavaScript学习(4.10):条件运算符(?:)、typeof运算符、delete运算符、void运算符、逗号运算符(,)
2015-11-25 09:27
501 查看
4.13 其他运算符
4.13.1 条件运算符 (?:) 条件运算符是JavaScript中唯一的一个三元运算符。它的操作数可以是任意类型。第一个操作数当做布尔值 ,如果它是真值,那么将计算第二个操作数,并返回计算结果;否则,如果第一个操作数是假值,那么将计算第三个操作数,并返回计算结果。 |
4.13.2 typeof运算符 typeof是一元运算符,放在其单个操作符的前面,操作数可以是任意类型。返回值为表示操作数类型的一个字符串。 x typeof x undefined undefined null object true/false boolean 任意数字或NaN number 任意字符串 string 任意函数 function 任意内置对象(非函数) object 任意宿主对象 右编译器各自实现的字符串,但不是undefined,boolean,number和string typeof常用的写法: typeof xxx 或者 typeof(xxx) 当操作数是null的时候,typeof将返回“object”,如果想将null和对象区分开,必须正对特殊值显式检测。对于宿主对象来说,typeof有可能并不返回“object”,而返回字符串。实际上客户端JavaScript中的大多数宿主对象都是“object”类型。 所有对象和数组的typeof运算结果是“object”而不是“function”,因此对于区分对象和其他原始值很有帮助。如果想区分对象的类,可以使用instanceof运算符。 JavaScript中的函数是对象的一种,但是typeof运算符还是将函数特殊对待,对函数返回特殊值“function”。在JavaScript中,函数和可执行对象有微妙的区别。所有的函数都是可执行的,但是对象也有可能是可执行的,可以像调用函数一样调用它,但它并不是一个真正的函数。在ECMAScript 3中,对于所有内置可执行对象,typeof运算符一律返回“function”。ECMASript 5则扩充至所有可执行对象,包括内置对象和宿主对象。 |
4.13.3 delete运算符 delete是一元运算符,它用来删除兑现属性或者数组元素。就像赋值、递增、递减运算符一样,delete也是具有副作用的,它是用来做删除操作的,不是用来返回一个值的: var o = {x:1 , y:2}; delete o.x; //true "x" in o; //false var a =[1 , 2 ,3]; delete a[2]; //true "2" in a; //false 元素2在数组中已经不存在了 a.length; //3 但数组长度没有变 a[2]; //undefined 并且设置一个undefined delete希望它的操作数是一个左值,如果它不是一个左值,那么delete将不进行任何操作同时返回true,否则delete将试图删除这个指定的左值。如果删除成功,delete将返回true。但是一些内置核心和客户端属性是不能删除的,用户通过var语句声明的变量不能删除,同样,通过function语句定义的函数和函数参数也不能删除。 在ECMASript 5严格模式中,如果delete的操作数是非法的,比如变量、函数或函数参数,delete操作将抛出一个语法错误(SyntaxError)异常,只有操作数是一个属性表达式的时候才会正常工作。在严格模式下,delete删除不可配置的属性时会抛出一个类型错误异常。在非严格模式下,这些delete操作都不会报错,只是简单的返回false,以表明操作数不能执行delete操作。 var o = {x:1 , y:2}; delete o.x; //true:删除一个对象属性 typeof o.x; //undefined 属性不存在 delete o.x; //true:删除不存在的属性 delete o; //这个时候应该是不能删除的,返回false,严格模式下,抛出一个异常 但是浏览器有不同的定义,chrome是true可以删除 o.x; |
4.13.4 void运算符 void是一元运算符,它出现在操作数之前,操作数可以是任意类型。作用:操作数会照常计算,但忽略计算结果并返回undefined,由于void会忽略操作数的值,因此在操作数具有副作用的时候使用void来让程序更具语义。 这个运算符最常用在客户端的URL-javascript:URL中,在URL中可以写带有副作用的表达式,而void则让浏览器不必显示这个表达式的计算结果: <a href="javascript:void window.open();"> 打开一个新窗口</a> |
4.13.5 逗号运算符(,) 逗号运算符是二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值: i=0, j=1 ,z=2; //2 等价 i = 0; j = 1; z = 2; 总是会计算左侧的表达式,但计算结果忽略掉,也就是说,只有左侧表达式具有副作用,才会使用逗号运算符让代码更通畅。逗号运算符最常用的场景是在for循环中,这个for循环通常具有多个循环变量。 |
相关文章推荐
- JavaScript学习(4.9):eval()简介
- JavaScript学习(4.8):赋值表达式
- JSP:自定义标签之开发html转义标签
- JavaScript学习(4.7):逻辑表达式
- JavaScript学习(4.6):关系表达式
- JS对象
- JavaScript学习(4.5):算术表达式
- JavaScript学习(4.4):运算符概述
- JSP:自定义标签之开发迭代标签
- JavaScript学习(4.3):调用表达式和对象创建表达式
- JSP:自定义标签之开发<c:if><c:else>标签
- js获取表单table 中文本框的值
- JSP:自定义标签之<c:if>标签
- JavaScript学习(4.2):函数定义表达式和属性访问表达式
- JSP:自定义标签之防盗链标签开发
- js中document.write的那点事
- JavaScript学习(4.1):原始表达式、对象和数组初始化表达式
- VS调试时JSON格式文件加载不了
- JSP:自定义标签的详细说明
- 中国省市 JS代码