Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久精品国产99国产精品免费看,一本久道热中字伊人,日本人xxxxxxxxxⅹ68

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript類型轉(zhuǎn)換

          JavaScript類型轉(zhuǎn)換

          avaScript中,類型轉(zhuǎn)換只有三種:

          1. 轉(zhuǎn)換成數(shù)字
          2. 轉(zhuǎn)換成布爾值
          3. 轉(zhuǎn)換成字符串

          經(jīng)典類型面試題

          console.log([]==![]); // true
          

          代碼分析

          1. 左側(cè)是一個(gè)對(duì)象(數(shù)組)
          2. 右側(cè)是一個(gè)布爾值,對(duì)象[]轉(zhuǎn)換成布爾值true,因?yàn)槌?/span>null所有對(duì)象都轉(zhuǎn)換成布爾值,所以![]結(jié)果為false
          3. 此時(shí)相當(dāng)于對(duì)象==布爾值,依據(jù)類型轉(zhuǎn)換規(guī)則,轉(zhuǎn)換成數(shù)字類型進(jìn)行比較
          4. 對(duì)象(空數(shù)組)轉(zhuǎn)換成0,布爾值false轉(zhuǎn)換成0
          5. 0==0,返回true

          類型轉(zhuǎn)換規(guī)則,如下圖:

          如若轉(zhuǎn)載,請(qǐng)注明出處:開源字節(jié) https://sourcebyte.cn/article/128.html

          數(shù)值轉(zhuǎn)換為字符串類型,可以直接利用加號(hào)"+"將數(shù)值加上一個(gè)長(zhǎng)度為零的空字符串, 或者通過toString()方法

          將數(shù)值轉(zhuǎn)換為字符串

          <script language="javascript">

          var a=3;

          var b=a + "";

          var c=a.toString();

          var d="student" + a;

          alert(typeof(a) + " " + typeof(b) + " " +typeof(c) + " " +typeof(d));

          </script>

          var a=b=c=4;

          alert(a+b+c.toString()); //其結(jié)果為84

          toString() 方法可把一個(gè) Number 對(duì)象轉(zhuǎn)換為一個(gè)字符串,并返回結(jié)果。

          NumberObject.toString(radix)

          radix 可選。規(guī)定表示數(shù)字的基數(shù),使 2 ~ 36 之間的整數(shù)。若省略該參數(shù),則使用基數(shù) 10。

          但是要注意,如果該參數(shù)是 10 以外的其他值,則 ECMAScript 標(biāo)準(zhǔn)允許實(shí)現(xiàn)返回任意值。

          數(shù)字的字符串表示。例如,當(dāng) radix 為 2 時(shí),NumberObject 會(huì)被轉(zhuǎn)換為二進(jìn)制值表示的字符串。

          <script type="text/javascript">

          var number=new Number(1337);

          document.write (number.toString())

          </script>

          輸出:1337

          對(duì)于字符串轉(zhuǎn)換為數(shù)值類型,javascript提供了兩種非常方便的方法,分別是parseInt和parseFloat()

          前者是將字符串轉(zhuǎn)換為整數(shù),后者將字符串轉(zhuǎn)換為浮點(diǎn)數(shù),只有字符類型才能調(diào)用這兩種方法,否則直接返回NaN。

          parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。

          parseInt(string, radix)

          radix 可選。表示要解析的數(shù)字的基數(shù)。該值介于 2 ~ 36 之間。

          如果 string 以 "0x" 開頭,parseInt() 會(huì)把 string 的其余部分解析為十六進(jìn)制的整數(shù)。

          如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個(gè)實(shí)現(xiàn)把其后的字符解析為八進(jìn)制或十六進(jìn)制的數(shù)字。

          如果 string 以 1 ~ 9 的數(shù)字開頭,parseInt() 將把它解析為十進(jìn)制的整數(shù)。

          parseInt("10"); //返回 10

          parseInt("19",10); //返回 19 (10+9)

          parseInt("11",2); //返回 3 (10+9)

          parseInt("17",8); //返回 15 (8+7)

          parseInt("1f",16); //返回 31 (16+15)

          parseInt("010"); //未定:返回 10 或 8

          <script language="javascript">

          document.write(parseInt("4567red") + "<br>");

          document.write(parseInt("53.5") + "<br>");

          document.write(parseInt("0xC") + "<br>"); //直接進(jìn)制轉(zhuǎn)換

          document.write(parseInt("isaacshun@gmail.com") + "<br>");

          </script>

          輸出:4567

          53

          12

          NaN

          parseFloat() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)浮點(diǎn)數(shù)。

          parseFloat(string)

          <script type="text/javascript">

          document.write(parseFloat("10"))

          document.write(parseFloat("10.00"))

          document.write(parseFloat("10.33"))

          document.write(parseFloat("34 45 66"))

          document.write(parseFloat(" 60 "))

          document.write(parseFloat("40 years"))

          document.write(parseFloat("He was 40"))

          </script>

          輸出:

          10

          10

          10.33

          34

          60

          40

          NaN

          Number() 函數(shù)把對(duì)象的值轉(zhuǎn)換為數(shù)字。

          Number(object)

          如果參數(shù)是 Date 對(duì)象,Number() 返回從 1970 年 1 月 1 日至今的毫秒數(shù)。

          如果對(duì)象的值無(wú)法轉(zhuǎn)換為數(shù)字,那么 Number() 函數(shù)返回 NaN。

          在本例中,我們將嘗試把不同的對(duì)象轉(zhuǎn)換為數(shù)字:

          <script type="text/javascript">

          var test1=new Boolean(true);

          var test2=new Boolean(false);

          var test3=new Date();

          var test4=new String("999");

          var test5=new String("999 888");

          var test6=null;

          var test7=undefined;

          var test8="1234abc"; //NaN

          var test9=.123; //0.123

          var test10=0123; //八進(jìn)制 83

          var test11=0x123; //或?qū)懗?X123 十六進(jìn)制 291

          document.write(Number(test1)+ "<br />");

          document.write(Number(test2)+ "<br />");

          document.write(Number(test3)+ "<br />");

          document.write(Number(test4)+ "<br />");

          document.write(Number(test5)+ "<br />");

          document.write(Number(test6)+ "<br />");

          document.write(Number(test7)+ "<br />");

          document.write(Number(test8)+ "<br />");

          document.write(Number(test9)+ "<br />");

          document.write(Number(test10)+ "<br />");

          document.write(Number(test11)+ "<br />");

          </script>

          輸出:

          1

          0

          1256657776588

          999

          NaN

          0

          NaN

          NaN

          0.123

          83

          291

          轉(zhuǎn)換變量的全局函數(shù)匯總:

          Number()

          使用Number函數(shù),可以將任意類型的值轉(zhuǎn)化成數(shù)值。

          // 數(shù)值:轉(zhuǎn)換后還是原來(lái)的值

          Number(324) // 324

          // 字符串:如果可以被解析為數(shù)值,則轉(zhuǎn)換為相應(yīng)的數(shù)值

          Number('324') // 324

          // 字符串:如果不可以被解析為數(shù)值,返回 NaN

          Number('324abc') // NaN

          // 空字符串轉(zhuǎn)為0

          Number('') // 0

          // 布爾值:true 轉(zhuǎn)成 1,false 轉(zhuǎn)成 0

          Number(true) // 1

          Number(false) // 0

          // undefined:轉(zhuǎn)成 NaN

          Number(undefined) // NaN

          // null:轉(zhuǎn)成0

          Number(null) // 0

          Number()和parseFloat()、parseInt()的區(qū)別:

          Number() 轉(zhuǎn)換時(shí)包含整數(shù)和浮點(diǎn)數(shù)部分, 可以將任意類型的值轉(zhuǎn)化成數(shù)值;

          parseInt() 只能轉(zhuǎn)換數(shù)值型字符串, 不能則直接轉(zhuǎn)換的返回NaN

          parseFloat() 只能轉(zhuǎn)換數(shù)值型字符串, 轉(zhuǎn)換時(shí)包含整數(shù)和浮點(diǎn)數(shù)部分, 不能則直接轉(zhuǎn)換的返回NaN

          var test="12345.678abc";

          document.write(Number(test)+"<br/>"); //NaN

          document.write(Number(null)+"<br/>"); //0

          document.write(Number(true)+"<br/>"); //1

          document.write(Number(undefined)+"<br/>"); //NaN

          document.write(parseFloat(test)+"<br/>"); //12345.678

          document.write(parseInt(test)+"<br/>"); //12345

          document.write(parseInt(null)+"<br/>"); //NaN

          document.write(parseInt(true)+"<br/>"); //NaN

          document.write(parseInt(undefined)+"<br/>"); //NaN

          String()

          String函數(shù)可以將任意類型的值轉(zhuǎn)化成字符串,轉(zhuǎn)換規(guī)則如下:

          數(shù)值:轉(zhuǎn)為相應(yīng)的字符串。

          字符串:轉(zhuǎn)換后還是原來(lái)的值。

          布爾值:true轉(zhuǎn)為字符串"true",false轉(zhuǎn)為字符串"false"。

          undefined:轉(zhuǎn)為字符串"undefined"。

          null:轉(zhuǎn)為字符串"null"。

          console.log(String(123)); // 123

          console.log(String("123")); // 123

          console.log(String(true)); // true

          console.log(String(undefined)); //undefined

          console.log(String(null)); //null

          Boolean() true: 非0、 非空字符串 false: 0、""、 null、 undefined、 NaN

          Boolean(undefined) // false

          Boolean(null) // false

          Boolean(0) // false

          Boolean(NaN) // false

          Boolean('') // false

          隱式類型轉(zhuǎn)換

          運(yùn)算中存在的隱式類型轉(zhuǎn)換

          "+"運(yùn)算符

          var a=11, b='22';

          var c=a + b;

          這里引擎將會(huì)先把a(bǔ)變成字符串"11"再與b進(jìn)行連接, 變成了"1122"。有人會(huì)有疑問, 為什么不把b變成數(shù)字22再進(jìn)行算術(shù)加運(yùn)算呢, 這樣的話c就是33了。

          沒有為什么, 當(dāng)運(yùn)算符"+"兩邊一個(gè)是數(shù)字類型, 一個(gè)是字符串類型時(shí), js引擎規(guī)定進(jìn)行字符串連接運(yùn)算而非算術(shù)加運(yùn)算。

          利用運(yùn)算符"+"這個(gè)特性, 可以很方便的將Number轉(zhuǎn)換成String。如

          var a=11;

          alert(typeof a); //-->number

          a=a + '';

          alert(typeof a); //-->string

          "-"運(yùn)算符

          "-"可以是一元運(yùn)算符(取負(fù)), 也可以是二元(減法運(yùn)算)的。如

          var a=11, b='5';

          var c=a - b;

          alert(typeof c); //--> number

          這里與上面的"+"相反,會(huì)把字符串b隱式的轉(zhuǎn)換成數(shù)字5再進(jìn)行算術(shù)減法運(yùn)算。利用這個(gè)特性,可以很方便的將String轉(zhuǎn)換成Number

          var a='11';

          a=a - '';

          alert(typeof a);// -->number

          語(yǔ)句中存在的隱式類型轉(zhuǎn)換

          if語(yǔ)句

          var obj={name:'jack'}

          if(obj){

          //do more

          }

          這里會(huì)把obj隱式的轉(zhuǎn)換成Boolean類型

          while語(yǔ)句

          var obj={name:'jack'}

          while(obj){

          //do more

          }

          同if語(yǔ)句

          for in時(shí)的類型轉(zhuǎn)換

          定義對(duì)象字面量時(shí)發(fā)生從標(biāo)識(shí)符到字符串的隱式轉(zhuǎn)換。

          var person={'name':'jack',"age":20,school:'PKU'};

          for(var a in person){

          alert(a + ": " + typeof a); / * 返回值name: string

          jack: string

          age: string

          school: string */

          }

          這里name, age分別加單/雙引號(hào)以強(qiáng)調(diào)其為String類型, school沒有加單/雙引號(hào)。

          我們遍歷下該對(duì)象的屬性, 查看其類型。發(fā)現(xiàn)school也被隱式的轉(zhuǎn)換成了String類型。

          數(shù)組的索引其實(shí)也是字符串類型。這著實(shí)令人驚嘆, 但事實(shí)的確如此。如

          var ary=[1,3,5,7];

          for(var a in ary){

          alert(a + ": " + typeof a); /* 返回值0: string

          1: string

          2: string

          3: string */

          }

          alert時(shí)存在的隱式類型轉(zhuǎn)換

          String.prototype.fn=function(){return this};

          var a='hello';

          alert(typeof a.fn()); //-->object

          alert(a.fn()); //-->hello

          給String原型上添加了個(gè)fn方法,該方法返回this,我們知道this可以理解成當(dāng)前類的實(shí)例對(duì)象,既然是對(duì)象那么typeof a.fn()自然返回是object了。

          關(guān)鍵是最后的alert(a.fn()),a.fn()返回的明明是對(duì)象,但卻隱式的轉(zhuǎn)換成了字符串"hello"顯示。

          同樣的情況發(fā)生在數(shù)字類型上,如

          Number.prototype.fn=function(){return this};

          var a=10;

          alert(typeof a.fn());//-->object

          alert(a.fn()); //-->10

          a.fn()返回的是對(duì)象類型, 但在alert(a.fn())時(shí)會(huì)隱式的將其轉(zhuǎn)換成數(shù)字。

          typeof(varname); 也可寫成 typeof varname;

          instanceof判斷數(shù)據(jù)類型

          var str=null

          var arr=[];

          var obj={}; //new Object()

          console.log(str instanceof Object); //false

          console.log(arr instanceof Array); //true

          console.log(obj instanceof Object); //true

          型轉(zhuǎn)換,typeof的用法

          例 3.1.1

          <HTML>
          <head>
          <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
          </head>
          <BODY>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
          /*
          Cast operator (Definition) refer to 過去的網(wǎng)站www.favo.com
          A way of converting data types.
          Primitive values can be converted from one to another or rendered as objects by using object constructors to convert the values.

          Boolean
          Number
          String

          Number() (Function) 馬克-to-win: actually Number() is the method of Global object.
          A Number type convertor.

          Property/method value type: Number primitive
          JavaScript syntax: - Number()
          - Number(aValue)
          Argument list: aValue A value to be converted to a number.

          When the Number() constructor is called as a function, it will perform a type conversion.
          The following values are yielded as a result of calling Number() as a function:

          Value Result
          Number No conversion, the input value is returned unchanged.
          Non numeric string NaN

          window.Number("23");在favo中查不出來(lái), 但I(xiàn)dea中可以打點(diǎn)打出來(lái)。
          */
          var a=9;
          /*下句話如果放在ie8中執(zhí)行, 必須打開debug工具*/
          // console.log(typeof(a));
          document.writeln(typeof(a));
          var as=String(a);
          //String是Global的方法
          document.writeln("typeof(as) is " + typeof(as));
          var x=window.Number("23");
          document.writeln("typeof(x) is " + typeof(x));
          var age2=Number("56");
          document.writeln(typeof(age2) + "is typeof(age2)");
          var age3=new Number(56);

          篇幅有限更多請(qǐng)見擴(kuò)展鏈接:http://www.mark-to-win.com/tutorial/js_1_TypeConvert.html「鏈接」


          主站蜘蛛池模板: 亚洲AV无码一区二区三区DV| 精品乱人伦一区二区三区| 亚洲天堂一区在线| 无码午夜人妻一区二区三区不卡视频| 精品国产一区二区三区免费看| 亚欧在线精品免费观看一区| 无码人妻精品一区二区三区99性 | 精品国产福利在线观看一区| 精品国产日韩亚洲一区在线| 一区二区三区杨幂在线观看| 色狠狠一区二区三区香蕉蜜桃| 人妻无码一区二区三区免费| 国产日韩精品视频一区二区三区| 日韩在线一区高清在线| 精品乱子伦一区二区三区| 国产精品高清一区二区三区| 无码国产精品一区二区免费虚拟VR| 海角国精产品一区一区三区糖心| 精品成人一区二区三区免费视频| 果冻传媒董小宛一区二区| 中文字幕在线看视频一区二区三区 | 亚洲国产精品第一区二区| 亚洲国产精品综合一区在线| 天天看高清无码一区二区三区 | 无码人妻精品一区二区三区不卡 | 亚洲色无码一区二区三区| 国产精品无码一区二区三区电影| 久久久国产一区二区三区| 精品一区二区无码AV| 国产精品毛片一区二区| 国产激情一区二区三区成人91| 视频在线观看一区二区三区| 波多野结衣在线观看一区| 国产日韩视频一区| 无码AⅤ精品一区二区三区| 精品一区二区三区在线视频观看| 琪琪see色原网一区二区| 国产成人精品无人区一区| 国产亚洲日韩一区二区三区| 亚洲日本一区二区| 天堂Av无码Av一区二区三区|