----------------------js中的运算符---------------------- js中运算符和Java中运算符大致相同 算术运算符: +,-,*,/,%,++,-- 赋值运算符: =,+=,-=,*=,/=,%= 比较运算符: ==,!=,===,!==,>,>=,<,<= 位运算符: & , | 逻辑运算符: && ,|| 前置逻辑运算符: ! (not) 三元运算符: ? : 其他运算符: typeof, delete js中比较运算符中的 ==(或!=) 和 ===(或!==)的区别: (1)== 是相等运算符, 比较两个值是否相等,如果比较的两个值是同一类型, 直接进行比较; 如果比较的两个值不是同一类型, 会自动转换成同一类型再比较是否相等 (2)=== 是严格相等运算符, 比较的两个值必须是同一类型, 否则直接返回false. 例如: 1 == "1" //true 先转换成同一类型再比较是否相等 1 == true //true 先转换成同一类型再比较是否相等 1 == (4-3) //true 1 === "1" //false 不是同一类型, 直接返回false 1 === "true" //false 不是同一类型, 直接返回false 1 === (4-3) //true 同一类型,并且值相等 typeOf运算符 typeOf是一个一元运算符, 放在一个运算数之前, 这个运算数可以是任意类型的. 它的返回值是一个字符串, 表示这个运算数的类型, 如: var a = 100; typeOf a; //"number" (还包括任意数值和NaN) var b = "abc"; typeOf b; //"string" (包括任意字符串) var c = true; typeOf c; //"boolean" var d = undefined; typeOf d; //"undefined" var d = null; typeOf d; //"object" typeOf后面可以跟上圆括号, 在求一个表达式的类型时,可以用圆括号括起来, 例如: typeOf(1+"100"); 这让typeOf看起来像一个函数, 注意它是一个运算符, 不是函数! 附: typeof null // "object" 上面代码表示,查询null的类型,返回结果是object(对象)。 这并不是说null的数据类型就是对象,而是JavaScript早期部署中的一个约定俗成,其实不完全正确, 后来再想改已经太晚了,会破坏现存代码,所以一直保留至今. delete运算符 delete是一个一元运算符, 它用来删除对象属性或者数组的元素. 返回值是布尔值, 表示是否删除成功. 如: var a = [1,2,3]; //定义一个数组 delete a[2]; //删除最后一个元素 alert(a[3]); // 最后一个元素在数组中已经不存在了 a.length; // => 3 注意, 数组的长度并没有改变, 尽管元素已经删除, 但是删除操作留下了一个"洞", 并没有影响数组的长度, 因此数组长度仍然是3 ------------------------------------------------------ js中的数据类型的转换 js中的数据类型在需要时会自动的进行类型转换, 转换时遵循如下规则: 数值类型: 转字符串类型, 直接转成对应值的字符串, 3 --> "3" 转布尔类型, 0和NaN转成false, 其他数值转成true 在需要时, 会自动转成对应的包装对象 100 --> new Number(100) 字符串: 空字符串(""): 转数值为0, 转布尔值为false 非空纯数值字符串("123"): 转数值为对应的数值, 转布尔值为true 非空非数值字符串("abc"): 转数值为NaN, 转布尔值为true 在需要时, 会自动转成对应的包装对象. "aaa" --> new String("aaa") 布尔类型: true: 转数值为 1, 转字符串为"true" false: 转数值为 0, 转字符串为"false" 在需要时, 会自动转成对应的包装对象. undefined 转数值为NaN, 转字符串为"undefined", 转布尔值为false, 转对象会抛出异常! null 转数值为 0, 转字符串为"null", 转布尔值为false, 转对象会抛出异常! |
|