国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

語法 字符轉換

chaosx110 / 1560人閱讀

摘要:基本上,只要有一個字符無法轉成數(shù)值,整個字符串就會被轉為。字符串轉換后還是原來的值。布爾值轉為字符串,轉為字符串。

概述
強制轉換
Number()先v+nuber否則后t
String()先t加st是否原始值后v
Boolean(
Valueof返回本身
Tostringg 對象的話返object object 字符串
自動轉換
自動轉換為布爾值
自動轉換為字符串
自動轉換為數(shù)值
參考鏈接

1.強制轉換
2.Number()
2.1字符串:
(1)空 0(2)123 123(3)12aa NaN

2.2Nulll 0
2.3UUndefined null
2.4ture1 false 0
// 數(shù)值:轉換后還是原來的值
Number(324) // 324

// 字符串:如果可以被解析為數(shù)值,則轉換為相應的數(shù)值
Number("324") // 324

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

// 空字符串轉為0
Number("") // 0

// 布爾值:true 轉成 1,false 轉成 0
Number(true) // 1
Number(false) // 0

// undefined:轉成 NaN
Number(undefined) // NaN

// null:轉成0
Number(null) // 0

2.5parseInt函數(shù)嚴格很多?;旧希灰幸粋€字符無法轉成數(shù)值,整個字符串就會被轉為NaN。

parseInt("42 cats") // 42
Number("42 cats") // NaN

2.6另外,parseInt和Number函數(shù)都會自動過濾一個字符串前導和后綴的空格。

parseInt("tvr12.34n") // 12
Number("tvr12.34n") // 12.34

2.7(2)對象

簡單的規(guī)則是,Number方法的參數(shù)是對象時,將返回NaN,除非是包含單個數(shù)值的數(shù)組。

Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([5]) // 5

先valueof判斷是否對象再tostring判斷是否對象用number
第一步,調用對象自身的valueOf方法。如果返回原始類型的值,則直接對該值使用Number函數(shù),不再進行后續(xù)步驟。

第二步,如果valueOf方法返回的還是對象,則改為調用對象自身的toString方法。如果toString方法返回原始類型的值,則對該值使用Number函數(shù),不再進行后續(xù)步驟。

第三步,如果toString方法返回的是對象,就報錯。
var obj = {x: 1};
Number(obj) // NaN

// 等同于
if (typeof obj.valueOf() === "object") {
Number(obj.toString());
} else {
Number(obj.valueOf());
}

上面代碼中,Number函數(shù)將obj對象轉為數(shù)值。背后發(fā)生了一連串的操作,首先調用obj.valueOf方法, 結果返回對象本身;于是,繼續(xù)調用obj.toString方法,這時返回字符串[object Object],對這個字符串使用Number函數(shù),得到NaN。

默認情況下,對象的valueOf方法返回對象本身,所以一般總是會調用toString方法,而toString方法返回對象的類型字符串(比如[object Object])。所以,會有下面的結果。

Number({}) // NaN
如果toString方法返回的不是原始類型的值,結果就會報錯。

var obj = {
valueOf: function () {

return {};

},
toString: function () {

return {};

}
};

Number(obj)
// TypeError: Cannot convert object to primitive value
上面代碼的valueOf和toString方法,返回的都是對象,所以轉成數(shù)值時會報錯。

從上例還可以看到,valueOf和toString方法,都是可以自定義的。

Number({
valueOf: function () {

return 2;

}
})
// 2

Number({
toString: function () {

return 3;

}
})
// 3

Number({
valueOf: function () {

return 2;

},
toString: function () {

return 3;

}
})
// 2
上面代碼對三個對象使用Number函數(shù)。第一個對象返回valueOf方法的值,第二個對象返回toString方法的值,第三個對象表示valueOf方法先于toString方法執(zhí)行。

3.String()
(1)原始類型值

數(shù)值:轉為相應的字符串。
字符串:轉換后還是原來的值。
布爾值:true轉為字符串"true",false轉為字符串"false"。
undefined:轉為字符串"undefined"。
null:轉為字符串"null"。
String(123) // "123"
String("abc") // "abc"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"

(2)String方法的參數(shù)如果是對象,返回一個類型字符串;如果是數(shù)組,返回該數(shù)組的字符串形式。

String({a: 1}) // "[object Object]"
String([1, 2, 3]) // "1,2,3"
2.1String方法背后的轉換規(guī)則,與Number方法基本相同,只是互換了valueOf方法和toString方法的執(zhí)行順序。

先調用對象自身的toString方法。如果返回原始類型的值,則對該值使用String函數(shù),不再進行以下步驟。
如果toString方法返回的是對象,再調用原對象的valueOf方法。如果valueOf方法返回原始類型的值,則對該值使用String函數(shù),不再進行以下步驟。
如果valueOf方法返回的是對象,就報錯。

如果toString法和valueOf方法,返回的都是對象,就會報錯。

var obj = {
valueOf: function () {

return {};

},
toString: function () {

return {};

}
};

String(obj)
// TypeError: Cannot convert object to primitive value
下面是一個例子。

String({a: 1})
// "[object Object]"

// 等同于
String({a: 1}.toString())
// "[object Object]"
上面代碼先調用對象的toString方法,發(fā)現(xiàn)返回的是字符串[object Object],就不再調用valueOf方法了

下面是通過自定義toString方法,改變返回值的例子。

String({
toString: function () {

return 3;

}
})
// "3"

String({
valueOf: function () {

return 2;

}
})
// "[object Object]"

String({
valueOf: function () {

return 2;

},
toString: function () {

return 3;

}
})
// "3"
上面代碼對三個對象使用String函數(shù)。第一個對象返回toString方法的值(數(shù)值3),第二個對象返回的還是toString方法的值([object Object]),第三個對象表示toString方法先于valueOf方法執(zhí)行

4.Boolean()
它的轉換規(guī)則相對簡單:除了以下五個值的轉換結果為false,其他的值全部為true。

undefined
null
0(包含-0和+0)
NaN
""(空字符串

Boolean(true) // true
Boolean(false) // false

4.1注意,所有對象(包括空對象)的轉換結果都是true,甚至連false對應的布爾對象new Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

5.自動轉換
加法 字符串
If 布爾
一元 和減法 數(shù)值

{foo: "bar"} // NaN

[1, 2, 3] // NaN

全部使用Boolean、Number和String函數(shù)進行顯式轉換
6.自動轉換為布爾值
7.自動轉換為字符串
加法
"5" + 1 // "51"
"5" + true // "5true"
"5" + false // "5false"
"5" + {} // "5[object Object]"
"5" + [] // "5"
"5" + function (){} // "5function (){}"
"5" + undefined // "5undefined"
"5" + null // "5null"

8.自動轉換為數(shù)值
除了加法,
其他運算符都會把運算子自動轉成數(shù)值。

"5" - "2" // 3
"5" * "2" // 10
true - 1 // 0
false - 1 // -1
"1" - 1 // 0
"5" * [] // 0
false / "5" // 0
"abc" - 1 // NaN
null + 1 // 1
undefined + 1 // NaN

+"abc" // NaN
-"abc" // NaN
+true // 1
-false // 0

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105986.html

相關文章

  • PHP的8 種原始數(shù)據(jù)類型【基礎】

    摘要:如果給定的一個數(shù)超出了的范圍,將會被解釋為。從布爾值轉換將產生出零,將產生出壹。由于內部表達方式的原因,比較兩個浮點數(shù)是否相等是有問題的。和在小數(shù)點后五位精度內都是相等的。這里共有兩種語法規(guī)則一種簡單規(guī)則,一種復雜規(guī)則。 前言 搬運:PHP官方文檔 四種標量類型 boolean(布爾型) 這是最簡單的類型。boolean表達了真值,可以為TRUE或FLASE。要指定一個布爾值,使用關...

    whataa 評論0 收藏0
  • JavaScript 之 核心語法 [ 類型轉換 ]

    摘要:隱式數(shù)據(jù)類型轉換轉換成類型字符串用法空字符串變量名稱啊哈哈轉換成字符串數(shù)字類型和布爾類型轉換會將其值用字符串的方式顯示數(shù)字類型轉換成字符串類型顯示顯示轉換后的類型布爾類型轉換成字符串類型顯示顯示轉換后的類型轉換成類型數(shù)字用法加號變 隱式數(shù)據(jù)類型轉換 轉換成string類型(字符串) - 用法( - 空字符串) + 變量名稱 var num = 100; var str1 = 啊哈哈; ...

    muzhuyu 評論0 收藏0
  • PHP變量類型

    摘要:獲取變量的類型,使用函數(shù)。要檢驗某個類型,可以使用函數(shù),如是在整形是在浮點型是在字符串如果需要將一個變量強制轉換為某類型,可以對其使用強制轉換或者函數(shù)。自起,此限制僅對包含變量時有效。 簡介 PHP支持9種原始數(shù)據(jù)類型。 4種標量類型: boolean布爾型 integer 整形 float 浮點型(也稱作double) string 字符串 3種復合類型: array...

    selfimpr 評論0 收藏0
  • JavaScript基本語法(一)

    摘要:目錄語句變量小結基本語法一是核心知識點的基本語法的第一部分,主要介紹了語句表達式變量和數(shù)據(jù)類型不包括函數(shù)類型的基本知識點,函數(shù)類型將在下一章函數(shù)二中詳細探討語句程序的執(zhí)行是由一條條語句組成的每一條語句是為完成特定任務而執(zhí)行的操作語句當中可以 目錄 1. 語句 2. 變量 3. 小結 JavaScript基本語法(一)是JavaScript核心知識點(ECMAScript)的基本語法的...

    shiina 評論0 收藏0
  • 前端知識點總結——JS基礎

    摘要:語法常量名值常量名在程序中,通常采用大寫形式。結果為類型作用表示使用的數(shù)據(jù)不存在類型只有一個值即當聲明的變量未賦值未初始化時,該變量的默認值就是類型用于表示不存在的對象。結果為按位或,對小數(shù)取整將任意小數(shù)與做按位或,結果則取整數(shù)部分。 前端知識點總結——JS基礎 1.javascript概述(了解) 1.什么是javascript javascript簡稱為js,是一種運行于js解釋器...

    wangbjun 評論0 收藏0

發(fā)表評論

0條評論

chaosx110

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<