js數(shù)據(jù)轉(zhuǎn)換

操作符和表達(dá)式

1.操作符

定義:

  • 操作符是js程序中操作值的符號活喊。
  • 通過操作符可以構(gòu)建復(fù)雜表達(dá)式

操作數(shù)

  • 操作數(shù)指操作符可以操作值的數(shù)量
    一元操作符:可以操作一個(gè)值
-100
a++
++a

二元操作符:可以操作兩個(gè)值

1+2
a = 100
a === b
let a

三元操作符:可以操作三個(gè)值

a ? 100 : -100

操作符的結(jié)果

  • 所有的操作符在操作值的時(shí)候必須返回值

操作符的分類

操作符是否有破壞性

  • 破壞性的操作符:指操作符的運(yùn)算結(jié)果會修改之前的值
    所有的賦值操作符都是破壞性的
    ++ -- 一元操作符也是破壞性的
  • 非破壞性的操作符
    不會對原有的值產(chǎn)生影響

從功能角度分類

第一組:算數(shù)操作符
  • 一元操作運(yùn)算符 :
    定義:對一個(gè)值進(jìn)行操作返回操作后的值吐葱,特點(diǎn):它擁有最高優(yōu)先級丰辣,右結(jié)合性的特點(diǎn)括饶。
    -(負(fù)號)
    +(正號):將操作的值轉(zhuǎn)換為數(shù)值并返回轉(zhuǎn)換后的值概耻。它通過調(diào)用Number()內(nèi)置函數(shù)
    --
    ++

  • 二元運(yùn)算操作符:+ - * / % **
第二組:關(guān)系操作符

通過操作符比較兩個(gè)值的關(guān)系:是否相等猫缭,大于,小于還是等
相等不等操作符:== === != !==

true == false

比較操作符: < > <= >=

1> 2
a => b

in操作符 :檢查對象的屬性
instanceof操作符

第三組:邏輯操作符

通過操作符對兩個(gè)值進(jìn)行邏輯的判斷
邏輯與 &&
邏輯非 越庇!
邏輯或 ||

第四組:賦值操作符

通過操作符為變量賦值

+=
-=
*=
/=
%=
**=

第五組:其他操作符

鏈接操作符:+
檢測數(shù)據(jù)類型的操作符:typeof
刪除操作符:delete
逗號操作符:,
void操作符

操作符的喜好

操作符在操作值的時(shí)候是對值有要求的奉狈,有些操作符喜歡數(shù)值卤唉,有些操作符來者不拒。

操作符的優(yōu)先級

操作符是有優(yōu)先級的

1+ 2 * 3//先乘除后加減
2*3**2//18 
  • 小括號操作符優(yōu)先級最高
  • 一元操作符優(yōu)先級第二
  • 逗號操作符優(yōu)先級最低
  • 賦值操作符優(yōu)先級倒數(shù)第二低
  • 冪操作符的優(yōu)先級高于乘除取余
  • 乘除取余高于加減
  • 算數(shù)運(yùn)算符優(yōu)先級高于關(guān)系運(yùn)算符
  • 關(guān)系運(yùn)算符優(yōu)先級高于邏輯運(yùn)算符

操作符的結(jié)合性

操作的結(jié)合性指:操作符在操作值的時(shí)候的計(jì)算方向

  • 左結(jié)合:從左向右執(zhí)行計(jì)算
  • 右結(jié)合:從右向左執(zhí)行計(jì)算
//大多數(shù)操作符都具有左結(jié)合性
1+2+3
//少量的操作符具有右結(jié)合性:冪 嘹吨,賦值運(yùn)算符搬味,三元運(yùn)算符
2**3**2//512右結(jié)合

let c = 2//右結(jié)合
a? "hello" : (b ? 1: 0)

2.表達(dá)式

定義:表達(dá)式是一個(gè)可以求值的js短語。(表達(dá)式是有返回值的)
1.所有的表達(dá)式都必須計(jì)算出一個(gè)值
2.表達(dá)式是可以嵌套的

表達(dá)式分類

1.字面量表達(dá)式:常量表達(dá)式 => js中最簡單的表達(dá)式

100
"abc"
true
false
undefined
null

2.變量表達(dá)式:返回的是之前賦值給變量的值

i //變量表達(dá)式
mm //變量表達(dá)式
let srt //let 是一個(gè)關(guān)鍵字蟀拷,用于聲明變量

3.數(shù)組定義表達(dá)式

[1,2,3]

4.對象定義表達(dá)式

{
x = 1,
y = 2
}

5.函數(shù)定義表達(dá)式

let fn = function(a,b){
return a ** b
}

6.數(shù)組訪問表達(dá)式

arr[0]
arr[arr.length - 1]

7.屬性訪問表達(dá)式

let obj = {
name = "張三"
age = "18"
}
student.name

8.函數(shù)調(diào)用表達(dá)式

fn()
fn(2碰纬,3)

9.賦值表達(dá)式

a = 100
a += 100//a = a +100
a -= 10//a = a -100
a /= 100//a = a/ 100
a %= 100//a = a % 100
a *= 100//a = a*  100
a **= 100//a = a** 100

10.算數(shù)表達(dá)式

1* 1
1%1
1**1
1-1
1+1

11.關(guān)系表達(dá)式

1 > 2//比較表達(dá)式
2 < 1//比較表達(dá)式
unll == undefined//相等表達(dá)式
a != b//不等表達(dá)式

12.邏輯表達(dá)式

100 && "hello"
true || false
!1

13.求值表達(dá)式
14.其他表達(dá)式

數(shù)據(jù)類型轉(zhuǎn)換

  • 原始類型
    數(shù)值
    字符串
    undefined
    unll
    symbol
  • 對象類型
    數(shù)據(jù)類型指把任意一種數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值,字符串问芬,布爾值類型

顯示數(shù)據(jù)類型轉(zhuǎn)換

ECMAScript為我們做顯示數(shù)據(jù)轉(zhuǎn)換有三個(gè)函數(shù)

1.顯示轉(zhuǎn)數(shù)值

  • 任何一種數(shù)據(jù)類型都可以轉(zhuǎn)成數(shù)值
  • 方法一:Number()

  • 接受任意類型的值
    工作原理:
    1.內(nèi)置函數(shù)
    2.整體轉(zhuǎn)換
    3.接收任意的值
    4.可以轉(zhuǎn)首尾空格和小數(shù)點(diǎn)
    5.空都轉(zhuǎn)成0悦析,[] unll ""
    6.NaN : [1,2,3] undefined {}
    語法:
new Nunber(thing)
Number(thing)

定義:
1.Number()作為函數(shù)調(diào)用時(shí),它將傳入的值轉(zhuǎn)為數(shù)值
2.Number()用于構(gòu)造函數(shù)
語法規(guī)則:

  • Number是整體轉(zhuǎn)換此衅,對傳入的每一個(gè)字符進(jìn)行檢測强戴,只要有一個(gè)字符無法轉(zhuǎn)換它就返回NaN
  • Number是js的一個(gè)內(nèi)置的構(gòu)造函數(shù)
  • 調(diào)用Number方法的時(shí)候,它可以把任意類型的值轉(zhuǎn)換為數(shù)值型
    規(guī)則:
    1.Number()方法是整體1轉(zhuǎn)換:對傳入的每一個(gè)字符進(jìn)行轉(zhuǎn)換
    轉(zhuǎn)換成功:有一個(gè)字符無法轉(zhuǎn)換挡鞍,那么它就返回nan
    轉(zhuǎn)換失斊锎酢:全部字符通過檢測,則返回檢測到的數(shù)值
    2.字符串:Nunber()方法可以轉(zhuǎn)換小數(shù)點(diǎn)
    3.字符串:可以轉(zhuǎn)首尾空格
    4.字符串:Number()方法無法轉(zhuǎn)換字母特殊符號
    5.布爾值:true 轉(zhuǎn)為 1 false 轉(zhuǎn)為0
    6.對象 : 空對象{} 轉(zhuǎn)為nan
    7.null 轉(zhuǎn)為0
    8.undefined 轉(zhuǎn)為nan
    9.空字符串 “” 轉(zhuǎn)為0
  1. 數(shù)組 : 空數(shù)組[ ]轉(zhuǎn)為0
    11.數(shù)組:[100]轉(zhuǎn)為100
    12.數(shù)組:[1,2,3]轉(zhuǎn)為nan
       n =true //1
       n =undefined//nan
        n = {}//nan
        n = null // 0
          n = false//0
        n = !true//0
        n = "" //0
        n = []//0
        n = Number(n)
        console.log(n,typeof n)

方法2:parselnt()

定義:parselnt()函數(shù)解析字符串參數(shù)并返回指定基數(shù)(數(shù)學(xué)數(shù)字系統(tǒng)中的基數(shù))的整數(shù)

  • 該方法的對象是字符串
  • 對字符串從左到右逐一檢測墨微,遇到非數(shù)值(包括小數(shù)點(diǎn))就停止檢測道媚,返回檢測到的數(shù)值,如果沒有則返回NaN
    語法:
parselnt(string)
parselnt(string,radix)
  • 參數(shù)1 :字符串
  • 參數(shù)2:指定基數(shù)
 let v = "100"
            v = "3.14"http://3
            v = "10.5px"http://10
            v = "10px"http://10
            v = "px"http://對字符串從左到右逐一檢測翘县,遇到非數(shù)值就停止檢測
            v = {}//nan
            v = true //nan
        v = parseInt(v)
        console.log(v,typeof v)

工作原理:
先將參數(shù)使用內(nèi)置函數(shù)轉(zhuǎn)為字符串最域,然后對字符串從左到右逐一檢測,遇到非數(shù)值就停止檢測锈麸,返回檢測的數(shù)值镀脂,沒有檢測到返回nan。

方法3:parseFloat()

定義:parseFloat()函數(shù)解析一個(gè)字符串參數(shù)并返回一個(gè)浮點(diǎn)數(shù)

  • 對字符串從左到右逐一檢測忘伞,遇到非數(shù)值(不包括小數(shù)點(diǎn))就停止檢測

2.顯示轉(zhuǎn)字符串

  • 任何一種數(shù)據(jù)類型都可以轉(zhuǎn)成字符串
  • 方法一:String()

定義:
1.String()作為函數(shù)調(diào)用時(shí)薄翅,它將傳入的值轉(zhuǎn)為字符串
2.String()用于構(gòu)造函數(shù)

new String(thing)
String(thing)
let a = 100
a = String(a)//a
a = []//""
a = [100]//100
a = true//true
a= -0//0
a=[1,2,3]//1,2,39
a= {} //[object object]
a = {name:"nh"}//[object object]
console.log(a typeof a)

方法二:值.toString()函數(shù)

值.toString()是所有數(shù)據(jù)類型的方法(null和undefined除外)

let a = 100
a = a.toString()
console.log(a typeof a)//100 string

3.顯示轉(zhuǎn)布爾值

  • Boolean()

  • 任何一種數(shù)據(jù)類型都可以轉(zhuǎn)成布爾值

做數(shù)據(jù)類型轉(zhuǎn)換,請建立2個(gè)概念:傳入的值 返回的值

  • 可以傳入任意類型的值
  • 返回值我們只關(guān)注:字符串氓奈、數(shù)值匿刮、布爾值
  • 數(shù)據(jù)類型轉(zhuǎn)換指把任意一種數(shù)據(jù)類型轉(zhuǎn)換成為數(shù)值、字符串或布爾值類型探颈。

隱示數(shù)據(jù)類型轉(zhuǎn)換

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市训措,隨后出現(xiàn)的幾起案子伪节,更是在濱河造成了極大的恐慌光羞,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怀大,死亡現(xiàn)場離奇詭異纱兑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)化借,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門潜慎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蓖康,你說我怎么就攤上這事铐炫。” “怎么了蒜焊?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵倒信,是天一觀的道長。 經(jīng)常有香客問我泳梆,道長鳖悠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任优妙,我火速辦了婚禮乘综,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘套硼。我一直安慰自己卡辰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布熟菲。 她就那樣靜靜地躺著看政,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抄罕。 梳的紋絲不亂的頭發(fā)上允蚣,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音呆贿,去河邊找鬼嚷兔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛做入,可吹牛的內(nèi)容都是我干的冒晰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竟块,長吁一口氣:“原來是場噩夢啊……” “哼壶运!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浪秘,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒋情,失蹤者是張志新(化名)和其女友劉穎埠况,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棵癣,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辕翰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狈谊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜命。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖河劝,靈堂內(nèi)的尸體忽然破棺而出壁榕,到底是詐尸還是另有隱情,我是刑警寧澤丧裁,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布护桦,位于F島的核電站,受9級特大地震影響煎娇,放射性物質(zhì)發(fā)生泄漏二庵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一缓呛、第九天 我趴在偏房一處隱蔽的房頂上張望催享。 院中可真熱鬧,春花似錦哟绊、人聲如沸因妙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攀涵。三九已至,卻和暖如春洽沟,著一層夾襖步出監(jiān)牢的瞬間以故,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工裆操, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怒详,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓踪区,卻偏偏與公主長得像昆烁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子缎岗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容