js中的运算符。

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, 转对象会抛出异常!

品略图书馆 http://www.pinlue.com

猜你喜欢

转载自blog.51cto.com/14325182/2412265