您的位置:首页 > Web前端 > JavaScript

JS_运算符

2016-01-10 18:32 555 查看
今天了解下js中的几类运算符,其实都跟java等语言中的运算符类似,以下挑较重要的几点说明下:

1.+,-,*,/ ,%

js中number类型即为浮点数,所以在 / 运算后,得到的是浮点数;被除数是0,得到的是Infinity/-Infinity,0/0得到NaN.

var t1 = 10 / 3;//3.333..
var t2 = 10.2 % 5.1;//0
var t3 = 10 / 0;//Infinitiy
var t4 = 0 / 0;//NaN


2.++,--

对于++i;就是先将i的value+1,然后表达式的值即为i;对于i++,则是i的值+1,但表达式的值为+1之前的值。

var t = 10;
var j = ++t;//t:11 j:11
var i = t++;//t:12 i:11


3.==,=== (!=,!==类似)

首先注意一点,js中的基础数据类型(number,string,bollean),是按值比较的;而object类型(objects,arrays,functions)是按引用进行比较的

1>对于===(identical)的评判标准:

①比较的双方数据类型不一致:false

②双方为primitive类型,且其value一致(string类型的比较是逐字符的):true 注意:NaN不与任何类型identical,甚至自己,判断值是否为NaN,用isNaN()

③如果类型为object,array,function,双方的引用相同,则true;反之,引用不同,即使含值相同,false;

④两个null 或 两个undefined比较:true

2>对于==(equal)的评判标准:

①比较双方的值为null 和 undefined:true

②number与string比较:将string 转换成 number,再做比较

③比较的一方如果为true(false),将其转换成1(0),再做比较

④如果一方为object,另一方为string、number,将object转换成对应类型,再做比较(先调用其valueOf()方法,在调用toString()方法,转换成primitive类型,再做比较)

var s1 = "hello world";
var s2 = "HELLO world";
alert(s1 == s2);//false(js是区分大小写的)
s2 = s2.toLowerCase();
alert(s1 === s2);//true

var o = { name: "zhangsan", age: 21, married: true };
var o1 = o;
alert(o === o1);//true

var array = new Array(1, "yes", true, {});
var array1 = new Array(1, "yes", true, {}); //array===array1 :false
var array1 = array;
array === array1;//true

if (null == undefined) {
alert("yes,null is equal to undefined");
}
if (true=="1") {
alert("true is converted to 1,'1' is converted to 1,and 1 equal to 1");
}


4.in

in操作符要求其左侧操作数为stirng,右侧为object或array,该操作判断左侧的string是否为右侧对象的属性名称

var obj = { name: "lisi", age: 22, married: false };
alert("name" in obj);//true
alert("test" in obj);//false
alert("toString" in obj);//true 继承的默认属性


5.instanceof

该操作符要求左侧为object,右侧为定义对象的结构名称(构造函数名称),

var d = new Date();
d instanceof Date;//true
d instanceof Object;//true :all objects are instance of Object
d instanceof Number;//fales

var a = [1, 2, 4, "yes"];
a instanceof Array;//true
a instanceof Object;//true
a instanceof RegExp;//false


恩,就是这样,如果觉得有所收获,记得点个赞喔~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: