JS_运算符
2016-01-10 18:32
555 查看
今天了解下js中的几类运算符,其实都跟java等语言中的运算符类似,以下挑较重要的几点说明下:
1.+,-,*,/ ,%
js中number类型即为浮点数,所以在 / 运算后,得到的是浮点数;被除数是0,得到的是Infinity/-Infinity,0/0得到NaN.
2.++,--
对于++i;就是先将i的value+1,然后表达式的值即为i;对于i++,则是i的值+1,但表达式的值为+1之前的值。
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类型,再做比较)
4.in
in操作符要求其左侧操作数为stirng,右侧为object或array,该操作判断左侧的string是否为右侧对象的属性名称
5.instanceof
该操作符要求左侧为object,右侧为定义对象的结构名称(构造函数名称),
恩,就是这样,如果觉得有所收获,记得点个赞喔~
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
恩,就是这样,如果觉得有所收获,记得点个赞喔~
相关文章推荐
- js事件绑定的第二种形式
- echarts.js导致angular-translate加载模块失败
- js 用"name"做数组变量命名的问题
- javascript有用小技巧—实现分栏显示
- 多个ajax请求的同步异步问题
- JavaScript进阶(五)js中取小数整数部分函数
- JavaScript进阶(五)js中取小数整数部分函数
- js右下角定时通知提示框的实现
- JavaScript进阶(四)js字符串转换成数字的三种方法
- JavaScript进阶(四)js字符串转换成数字的三种方法
- JavaScript基础知识及常用方法总结
- javascript深入理解js闭包
- karma+seajs
- python解析网页中javascript动态添加的内容
- 【javascript】详解location.href几种用法的区别
- JavaScript类型判断typeof和instanceof
- Javascript运动框架
- js数组去重
- 前端--关于javascript基础
- Javascript 严格模式详解