js运算符

运算符

用于连接简单表达式,组成一个复杂的表达式。

‘+’号

  • 两个操作数都是数字,会做加法运算
  • 两个参数都是字符串或有一个参数是字符串,做字符串拼接
  • 在参数有对象的情况下,会调用其valueof或toString
obj={a:1,b:2}
obj+3//'[object object]3',先调用obj.toString()得出[object object]再和3相加
obj={a:1,b:2 valueof:function(){return 100}}//obj+3得出103,调用valueof的方法
  • 在只有一个字符串参数时,会尝试将其装换为数字
+'4'//4
+true//1
+false//1
+'ac'//NaN
+new Date()//1482648206084

除法

x/y

余数

x%y 100/3等于1

a=345,b=22  
parseInt(a/b)//商
a%b//余数

自增

++x或者x++

a=100,b=a++
console.log(a,b)//a=101,b=100先赋值再相加
c=100,d=++c 
console.log(d,c)//d=101,c=101,先加再赋值

求负运算符

-x为求负运算符
+x为数值运算符

赋值运算符

用于给变量赋值,最常见的是等号,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

比较运算符

比较两个值,返回一个布尔值,表示是否满足比较条件

==  
===
!=//不相等
!==//严格不相等
<
>
>=

布尔(逻辑)运算符

!//取反
&&//且
||//或
!''//!就是将后面的强调转换布尔值再取反  
!!//就是将后面强制转换为布尔类型 
condition?true case:false case//三元条件运算符

其他

小括号

如果把表达式放在圆括号之中,作用是求值。
如果跟在函数的后面,作用是调用函数

(1+1)//2
function(){}//报错如果(function(){})当做表达式

void

作用是执行一个表达式返回undefined

void(1+2)//undefined
function fn(){
  var undefined=3;
  var a;
  if(a===undefined){
  console.log('===')
}else{
  console.log('!==')
}
}//fn() !==当把undefined赋值了就不能做判断了,方法就是a===voido

逗号运算符

用于对两个表达式求值,并返回后一个表达式的值。

3,4//4
a=(3,4)//4,括号表示求表达式的值
a=3,4//等号的优先级高,a就等于3
var a=1,
     b=2//等同于var a=1;var b=1;

运算符优先级与结合性

  • typeof的优先级相当高
typeof 2*3//(typeof 2)*3等于NaN
  • ++,--是右结合的操作符,比加减乘除的优先级高
4++(不能这样写)
var a=0,b=0
a+++b//0
(a++)+b//0
  • 赋值运算符的优先级相当低
    a=b==c//等同于a=(b==c)
  • 逻辑非!也在优先级队列的前端比加减乘除高,但逻辑与,逻辑或优先级很低,不如加减乘除。
!2*0//0等价于(!2)*0
  • 一个关于逻辑运算符有意思的地方是“短路功能,会结合表达式计算值来考察,了解了逻辑运算父母的“短路特点”,在知道原始表达式的“返回值”就是本身,题目就很简单了。
    “短路”:false&&(anything)计算结果为false;
    true||(anything)计算结果为true;
  • ==与=的区别
    =是右结合;==的优先级高于=;0==false;''==false;
    使用==的时候,js会帮助我们做类型转换,造成一些匪夷所思的结果,那么使用==的时候会在哪些情况下做类型转换又会换成什么样子?
    如果两个值类型相同,则执行严格相等的运算。
    如果两个值的类型不同:
    如果一个是null,一个是undefined,那么相等。
    如果一个是数字,一个是字符串,先将字符串转为数字,然后比较。
    如果一个值是true/false,则将其转换为1/0比较
    如果一个值是对象,一个是数字或字符串,则尝试使用valueof和toString转换后比较。
    其他就不相等了。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,114评论 0 13
  • JavaScript中运算符主要用于连接简单表达式,组成一个复杂的表达式。常见的有算数表达式、比较表达式、逻辑表达...
    饥人谷_小侯阅读 444评论 0 0
  • 感恩申总给我照镜子,指出我的问题让我提高,让我更好的做人做事!感恩陈总照顾我的情绪也从另一个角度让我提高!感恩权贤...
    日精进_a07d阅读 144评论 0 4
  • 我曾那么固执地认为自己所看到的,就是对的,所想到的,就是远的。 但我还是忍不住,按照自己的想法走下去。 有一天,我...
    张百乐啊阅读 320评论 0 2