+:算符的加法;连接字符串

加法会将其它类型的值,自动转为字符串,然后再进行连接运算!

 var a=1+2;
console.log('first: '+a);
var a=1+2+'3';//先计算1+2,然后与'3'字符串连接
console.log('second: '+a);
var x=10;
var a=x+'';//将一个值转化为字符串
console.log('third: '+a);
//注意下面这种情况
var now=new Date();
console.log(typeof (now+2));//string
console.log(typeof (now-1));//number

JavaScript中有9个运算符:

+(加法:Addition),-(加法:Subtraction),*(乘法:Multiplication),/(除法:Division),%(取余:Remainder),++(自增:Increment),--(自减:Decrement),+(数值运算符:Convert to Number;+x),-(负数值运算符:Negate;-x)

 console.log(1+2);//
console.log(1-2);//-1
console.log(1*2);//
console.log(3/2);//1.5
console.log('取余运算的结果的符号由第一个运算子的符号决定');
console.log(3%2);//
console.log(-3%2);//-1
//数值运算符(+)只需要一个操作数,而加法需要两个操作数
//数值运算符(+)与Number()效果相同
console.log('数值运算符');
console.log(+'1');//
console.log(+false);//
console.log(+[]);//

赋值运算符&复合运算符:注意符号是连在一起的(例如 +=不能写为 + =,即中间没有空格;否则报错!)

 var x=1,y=2;
x=y;//赋值运算符,将y值赋值给x
x+=y;//即x=x+y;
x-=y;//x=x-y;
x*=y;//x=x*y;
x/=y;//x=x/y;
x%=y;//x=x%y;
x>>=y;//x=x>>y;
x<<=y;//x=x<<y;
x >>>=y;//x=x>>>y;
x &= y;//x=x&y;
x |=y;//x=x|y;
x ^=y;//x=x^y;

8个比较运算符:==(相等,equal),===(严格相等,strict equal),!=(不相等),!==(不严格相等),<(小于),<=(小于等于),>(大于),>=(大于等于),=(等于)

比较后结果,返回布尔值!

 console.log(2>1);//true
console.log('cat'>'Cat');//true,ASCII码c比C大
console.log('catdog'>'cat');//true
console.log('abc'>'bcde');//false

对象作比较时:

 //对象作比较时,一般先call valueOf()方法;如果返回的还是对象,call toString()方法
console.log('---');
var result=[2] > '11';//相当于[2].valueOf().toString()>'11'
console.log(result);
var result1=[2]>[1];//相当于[2].valueOf().toString()>[1].valueOf().toString()
var result2={x:1}>={y:2};//{x:1}.valueOf().toString()>={y:2}.b=valueOf().toString();即'[object object]'>='[object object]'
console.log(result1,result2);

==运算符的不足:故尽量少用(甚至不用)==运算符,使用===运算符进行相关操作!

 console.log(false == 'false');//false
console.log(null == undefined);//true
console.log(false == '');//true
console.log(false == null);//false

位运算符:直接对二进制位进行运算,共有7个:

或运算(or):|;两个二进制位均为0,则结果为0;否则为1

与运算(and):&;两个二进制位均为1,结果为1;否则为0

否运算(not):~;对二进制位取反

异或运算(xor):^;两个二进制位不同,则为1;否则为0

左移运算(left shift):<<;<<n:相当于乘上2的n次方

右移运算(right shift):>>;>>n:相当于除以2的n次方

带符号位的右移运算(zero filled right shift):>>>

位运算直接处理每一个比特位,是非常底层的运算,操作速度非常快;缺点是不直观,很多场合下不能使用,否则代码难以理解与排错!

位运算只对整数起作用:在javascript内部,数值是以64位浮点数进行存储,但在位运算时,是以32位带符号的整数进行运算,返回值也是32位带符号的整数!

转化为相应整数可以:(|0 ;舍去小数部分,只留下整数部分)

否运算示例:

 console.log('---');
console.log(~ 3);//-4 可以简单记忆为一个值与自身的取反值相加得到-1
console.log(~~ 3);//两次否运算得到本身
console.log(~~ 3.1);//取整效果,速度最快

异或运算示例:

 console.log(1^2);
//不引入临时变量,交换两个数据的值
var a=99,b=100;
a^=b;
b^=a;
a^=b;
console.log(a,b);//100,99
console.log(10.5^0);//取整效果

void运算符:执行一个表达式,不返回任何值;也可以说返回undefined

void运算符的一个主要作用是:在超链接中插入代码,返回undefined,防止页面跳转

 <body>
<!-- 此时会发生跳转 -->
<a href="www.test.com" onclick="f();">test</a>
<!-- 此时不发生跳转 -->
<a href="www.test.com" onclick="f();return false;">test1</a>
<!--此时也不发生跳转 -->
<a href="javascript:void(f())">test2</a>
<script>
function f(){
return false;
}
</script>
<!-- 下面可以使提交表单时页面不发生跳转 -->
<a href="javascript:void(document.form.submit())">test3</a>
</body>

()可以提高运算优先级,为了结构清晰,建议复杂的式子总是添加()!

注意:()中只能放置表达式;不能放置语句!

数据类型转换:强制数据类型转换;自动数据类型转换

强制转换:Number(),String(),Boolean()三个构造函数!

Number():

注意Number()对对象的强制转换:先valueOf,然后toString

String():

注意String()对对象的强制转化:先toString,然后valueOf

Boolean():undefined,null,0,NaN,''或""转化为false;其余均为true!

而其它诸如[],{}等均为true。

自动转换:建议需要的地方总是添加Number(),String(),Boolean(),利于检查和排错!

 参考:阮一峰JavaScript标准参考教程

JavaScript(四):运算符&数据类型转换的更多相关文章

  1. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  2. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  3. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  4. JavaScript中的数据类型转换

    本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...

  5. js上 四、数据类型转换

    1. 转布尔类型 Boolean():可以将任意类型的数据转为布尔类型: 语法:Boolean(值) 规则:

  6. C#高级编程四十一天----用户定义的数据类型转换

    用户定义的数据类型转换 C#同意定义自己的 数据类型,这意味着须要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...

  7. C#编程(四十一)----------用户定义的数据类型转换

    用户定义的数据类型转换 C#允许定义自己的 数据类型,这意味着需要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...

  8. Python基础之模块、数据类型及数据类型转换

    一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印 ...

  9. javascript学习3、数据类型、数据类型转换、运算符

    数据类型包括:基本数据类型和引用数据类型 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值 ...

随机推荐

  1. 转:Web项目的WEB-INF目录使用说明以及重定向与转发

    原文地址:https://www.cnblogs.com/shenxiaoquan/p/5819359.html 原文内容: 总结一下这篇文章的内容: WEB-INF下面的内容都是只能由服务器级别才能 ...

  2. 转:cookie.setPath()用法

    原文地址:cookie.setPath()的用法 正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得. 1.可在同一应用服务器内共享方法:设置cookie.setPath ...

  3. day4_修改文件

    修改文件有两种方式:一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容:第二种是把修改后的文件内容写到一个新的文件中 第一种:一次性把文件全部读到,读到内存这个能,这种文件小 ...

  4. sqlserver配置允许快照隔离

    ALTER DATABASE TustenaOS SET ALLOW_SNAPSHOT_ISOLATION ON

  5. Python 字符串常用方法总结

    明确:对字符串的操作方法都不会改变原来字符串的值 1,去掉空格和特殊符号 name.strip()  去掉空格和换行符 name.strip('xx')  去掉某个字符串 name.lstrip()  ...

  6. python练习题-day7

    1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3  while T ...

  7. Filter & Listener

    一 监听器的概述 监听器就是一个实现了特定接口的Java类,用于监听另一个Java类的方法调用或属性的改变.当被监听对象发生上述事件后,监听器某个方法将会立即被执行. 即用来监听其他对象的变化,主要应 ...

  8. tr 命令

    [root@localhost .txt abcdefg [root@localhost .txt |tr [a-z] [A-Z] ABCDEFG // 把文件小写字母变成大写字母

  9. Python识别字符型图片验证码

    前言 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验 ...

  10. 算法笔记-PHP实现队列的操作

    [队列]先进者先出,这就是典型的“队列”.         最基本的两个操作:入队enqueue(),放一个数据到队列尾部:出队dequeue(),从队列头部取一个元素.队列可以用数组或者链表实现,用 ...