js運算符

運算符

用于連接簡單表達式,組成一個復雜的表達式。

‘+’號

  • 兩個操作數(shù)都是數(shù)字,會做加法運算
  • 兩個參數(shù)都是字符串或有一個參數(shù)是字符串,做字符串拼接
  • 在參數(shù)有對象的情況下,會調用其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的方法
  • 在只有一個字符串參數(shù)時,會嘗試將其裝換為數(shù)字
+'4'//4
+true//1
+false//1
+'ac'//NaN
+new Date()//1482648206084

除法

x/y

余數(shù)

x%y 100/3等于1

a=345,b=22  
parseInt(a/b)//商
a%b//余數(shù)

自增

++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為數(shù)值運算符

賦值運算符

用于給變量賦值,最常見的是等號,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//三元條件運算符

其他

小括號

如果把表達式放在圓括號之中,作用是求值。
如果跟在函數(shù)的后面,作用是調用函數(shù)

(1+1)//2
function(){}//報錯如果(function(){})當做表達式

void

作用是執(zhí)行一個表達式返回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//等號的優(yōu)先級高,a就等于3
var a=1,
     b=2//等同于var a=1;var b=1;

運算符優(yōu)先級與結合性

  • typeof的優(yōu)先級相當高
typeof 2*3//(typeof 2)*3等于NaN
  • ++,--是右結合的操作符,比加減乘除的優(yōu)先級高
4++(不能這樣寫)
var a=0,b=0
a+++b//0
(a++)+b//0
  • 賦值運算符的優(yōu)先級相當?shù)?br> a=b==c//等同于a=(b==c)
  • 邏輯非!也在優(yōu)先級隊列的前端比加減乘除高,但邏輯與,邏輯或優(yōu)先級很低,不如加減乘除。
!2*0//0等價于(!2)*0
  • 一個關于邏輯運算符有意思的地方是“短路功能,會結合表達式計算值來考察,了解了邏輯運算父母的“短路特點”,在知道原始表達式的“返回值”就是本身,題目就很簡單了。
    “短路”:false&&(anything)計算結果為false;
    true||(anything)計算結果為true;
  • ==與=的區(qū)別
    =是右結合;==的優(yōu)先級高于=;0==false;''==false;
    使用==的時候,js會幫助我們做類型轉換,造成一些匪夷所思的結果,那么使用==的時候會在哪些情況下做類型轉換又會換成什么樣子?
    如果兩個值類型相同,則執(zhí)行嚴格相等的運算。
    如果兩個值的類型不同:
    如果一個是null,一個是undefined,那么相等。
    如果一個是數(shù)字,一個是字符串,先將字符串轉為數(shù)字,然后比較。
    如果一個值是true/false,則將其轉換為1/0比較
    如果一個值是對象,一個是數(shù)字或字符串,則嘗試使用valueof和toString轉換后比較。
    其他就不相等了。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,540評論 0 13
  • JavaScript中運算符主要用于連接簡單表達式,組成一個復雜的表達式。常見的有算數(shù)表達式、比較表達式、邏輯表達...
    饑人谷_小侯閱讀 500評論 0 0
  • 感恩申總給我照鏡子,指出我的問題讓我提高,讓我更好的做人做事!感恩陳總照顧我的情緒也從另一個角度讓我提高!感恩權賢...
    日精進_a07d閱讀 216評論 0 4
  • 我曾那么固執(zhí)地認為自己所看到的,就是對的,所想到的,就是遠的。 但我還是忍不住,按照自己的想法走下去。 有一天,我...
    張百樂啊閱讀 398評論 0 2

友情鏈接更多精彩內容