日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS不同类型之间运算与转换

發布時間:2024/4/17 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS不同类型之间运算与转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本數據類型隱式轉換:

隱式轉換邏輯

如:“32”+32=“3232”? ? "+"可以把數字轉換為字符串? ? “+”可以理解為字符串拼接

  “32”-32=0? ? ? ? ? ? “- * /”可以把操作數轉換為數字? ?“-”可以理解為減法運算

把一個變量num變成數字:num-0;

把一個變量num變成字符串:num+' ';

?

不同類型的基礎數據之間的加法,數據先轉換為number,然后轉換為string(如果有string類型數據參與運算)

null + undefined // 0+NaN null + false // 0+0 1 + true // 1+1 1 + '1' //'11';數字與字符串相加結果是字符串 1 + 2 + '3' //'33';(1+2)的結果然后與'3'相加;這里要把每一步加法單獨拆開來看,否則變成和下面一樣的結果了. 1 + (2 +'3') //'123';先運算2+'3',然后1+'23' 's' + null //'snull' 's' + undefined // 'sundefined' 's' + true //'strue' 1 + true + undefined + 's' // 1+1+NaN+'s'=2+NaN+'s'=NaN+'s'=‘NaNs’

?

數據前有加號‘+',可以讓字符串轉化為數字

+'1'+1 // 2

+'s'+2 // NaN

?

?常用的原始類型之間的轉換函數就是String()、Number()、Boolean()。

JS原始類型轉換表

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

由于隱式轉換只能轉換原始值類型,如果轉換對象等復雜類型需要用到valueOf()和toString()

判斷字符串是不是數字字符串:isNaN(str);

實現對象轉字符串以及對象轉數字的方法:

該轉換規則只適用于本地對象。什么是本地對象?本地對象也叫內置對象,就是JS標準規范定義的對象或類。比如Array、Object、function、data、global。還有一類對象叫宿主對象,就是要有一個宿生的對象和環境,在JS中宿主對象都是寄生在瀏覽器中的,在瀏覽器中才存在的對象,比如event、BOM、DOM。

本地對象都繼承了兩個轉換方法:toString()與valueOf()

?

(1)對象到字符串的轉換過程

原始(基本)類型:undefined、null、string、number、boolean

首先調用toString()方法,只有當toString不返回一個原始值的時候,才會調用valueOf()

toString()方法基本上所有對象都返回字符串。

toString()方法用在對象上面,比如function、array、object,返回的值都差不多,都是返回這個對象的源碼,但是以字符串的形式表示。

var a=[1,2,'a']; var b=a.toString(); console.log(b);//1,2,a console.log(typeof(b));//stringvar fun=function(){return 'hello world'; } var f=fun.toString(); console.log(f);//function(){return 'hello world';} console.log(typeof(f));//string

valueOf存在任意原始值,他就默認將對象轉換為表示它的原始值。如果是復合值,和toString()一樣,即返回本身,但是還是和toString()方法有區別的,toString()返回的是以字符串形式表示,valueOf()返回的是以對象的形式表示

var obj={name:'an'}; var obj1=obj.toString(); console.log(obj1);//[object,object] console.log(typeof(obj1));//string var obj2=obj.valueOf(); console.log(obj2);//{name: "an"}

?

(2)對象到數字的轉換過程

首先調用valueOf(),如果返回原始值,將原始值轉為數字并返回,valueOf()基本上所有的對象返回的都是對象,雖然先使用valueOf(),但實際上也是使用的toString()的方法。

如let a={ }; 轉為數字

首先會調用a的valueOf()方法,如果結果不是原始類型,那么調用toString()方法;

a.valueOf()返回對象本身{ },不是原始類型,所以需要繼續調用toString()方法;

a.toString()返回“[object,object]”,是一個字符串類型,即原始類型,所以接下來會調用Number(“[object,object]”),返回NaN;

?

做題中遇到的問題:

console.log(([])?true:false);//true Boolean([]); //true console.log(([]==false)?true:false);//true????為什么兩個的結果不一樣

對于[ ]==false

  • 首先左邊[ ]不是原始值類型,就會先調用valueOf()進行轉換;[ ].valueOf()? ?//[ ]
  • 發現valueOf轉換完之后,依然不是原始值類型,則繼續用toString()轉換;[ ].toString()? ?// “ ”
  • 轉換完成之后就轉為了原始值類型 “? ”;
  • 下面繼續用Number轉換? ?Number(" ")==0
  • 將右邊false轉為Number類型也為0;所以[ ]==0==false
  • 轉載于:https://www.cnblogs.com/xiaoan0705/p/8671305.html

    總結

    以上是生活随笔為你收集整理的JS不同类型之间运算与转换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。