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

基本介紹

ECMAScirpt 5.1 中定義了6種數(shù)據(jù)類型欠拾,其中有5中簡單數(shù)據(jù)類型(基本數(shù)據(jù)類型):

  1. Undefined:只有一個(gè)值胰锌,為undefined,意味著“空值(no value)”藐窄,適用于所有數(shù)據(jù)類型资昧。
  2. Null:只有一個(gè)值,為null荆忍,意味著“空對象(no object)”格带,只適用于對象類型。(literal)
  3. Boolean:有兩個(gè)值刹枉,為true與false
  4. Number:值遵循IEEE 754標(biāo)準(zhǔn)的64位浮點(diǎn)數(shù)的集合叽唱,沒有整型數(shù)據(jù)結(jié)構(gòu)。此外還包含三個(gè)特殊的值:NaN微宝、Infinity棺亭、Infinity
  5. String:值是有窮個(gè)Unicode字符的集合。必須用'或"括起來芥吟。
  6. 還有一種復(fù)雜數(shù)據(jù)類型: Object
  7. 最新的ECMAScript 6 又加了一種類型:Symbol (ECMAScript 6 新定義)

typeof操作符

用來檢測給定變量的數(shù)據(jù)類型侦铜。
對一個(gè)值使用typeof操作符可能返回下列某個(gè)字符:

  1. “undefined”值未定義
  2. “boolean”布爾值
  3. “string”字符串
  4. “number”數(shù)值
  5. “object”對象或null
  6. “function”函數(shù)

使用:typeof 操作數(shù) / typeof(操作數(shù)) ——>圓括號不是必須的专甩,因?yàn)閠ypeof不是函數(shù)


Undefine類型

首字母大寫的Undefined表示的是一種數(shù)據(jù)類型钟鸵,小寫的undefined表示的是屬于這種數(shù)據(jù)類型的唯一的一個(gè)值。
使用var聲明變量但未進(jìn)行初始化時(shí)涤躲,這個(gè)變量的值就是undefined棺耍,例如:

var message;
alert(message == undefined); // true

一個(gè)未初始化的變量的值為undefined,一個(gè)沒有傳入實(shí)參的形參變量的值為undefined种樱,如果一個(gè)函數(shù)什么都不返回蒙袍,則該函數(shù)默認(rèn)返回undefined俊卤。

注意: 對未聲明的變量執(zhí)行typeof操作符同樣會返回undefined。

var message; //這個(gè)變量聲明之后默認(rèn)為undefined
// 下面這個(gè)變量未聲明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"


Null類型

首字母大寫的Null表示的是一種數(shù)據(jù)類型害幅,小寫的null表示的是屬于這種數(shù)據(jù)類型的唯一的一個(gè)值消恍。
null值表示一個(gè)空對象指針:

var car = null;
alert(typeof car); //"object"

如果定義的變量準(zhǔn)備用于保存對象,那么最好將該變量初始化為null以现。

undefined 值派生自 null狠怨,因此規(guī)定相等性測試返回 true。

null  == undefined // true
null === undefined // false

null 是一個(gè)字面量 (而不是全局對象的一個(gè)屬性邑遏,undefined 是 )

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

console.log(window.null);      //undefined
console.log(window.undefined); //undefined

null與undefined的區(qū)別

console.log(foot); // Uncaught ReferenceError: foot is not defined

var foo;
console.log(foo);  // undefined

var bar = null;
console.log(bar);  // null

typeof null        // object (bug in ECMAScript, should be null)
typeof undefined   // undefined

Boolean類型

1佣赖、如果 Boolean 構(gòu)造函數(shù)的參數(shù)不是一個(gè)布爾值,則該參數(shù)會被轉(zhuǎn)換成一個(gè)布爾值记盒。
2憎蛤、轉(zhuǎn)換規(guī)則:

數(shù)據(jù)類型 true false
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零數(shù)字值(包括無窮大) 0 和 NaN
Object 任何對象 null
Undefined (不適用) undefined
//初始化的時(shí)候
//false
var bfalse = new Boolean(false);
var bEmptyString = new Boolean("");
var bZero = new Boolean(0);
var bNaN = new Boolean(NaN);
var bNull = new Boolean(null);
var bNoParam = new Boolean(); //相當(dāng)于傳入undefined

//true
var btrue = new Boolean(true);
var btrueString = new Boolean("true");
var bfalseString = new Boolean("false");
var bSuLin = new Boolean("Su Lin");

不要通過新建 Boolean 對象的方法來將一個(gè)非布爾值轉(zhuǎn)化成布爾值。 直接使用 Boolean 函數(shù)才是正確的

var x = Boolean(expression);     // 這樣用
var x = new Boolean(expression); // 而不要這樣!

Number類型

根據(jù) ECMAScript 標(biāo)準(zhǔn)纪吮,JavaScript 中只有一種數(shù)字類型:基于 IEEE 754 標(biāo)準(zhǔn)的雙精度 64 位二進(jìn)制格式的值(-(253 -1) 到 253 -1)俩檬。它并沒有為整數(shù)給出一種特定的類型。除了能夠表示浮點(diǎn)數(shù)外碾盟,還有一些帶符號的值:+Infinity豆胸,-Infinity 和 NaN (非數(shù)值,Not-a-Number)

1.數(shù)值字面量格式:

var intNum = 55; //十進(jìn)制整數(shù)

var octalNum1 = 070; //八進(jìn)制 56
var octalNum1 = 079; //無效巷疼,解析為79
var octalNum1 = 08;  //無效晚胡,解析為8

var hexNum1 = 0xA;  //十六進(jìn)制 10
var hexNum1 = 0x1f; //十六進(jìn)制31

var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1; //有效但不推薦
var floatNum4 = 1.0; //小數(shù)點(diǎn)后面沒有數(shù)字,轉(zhuǎn)換為整數(shù) 解析為1
var floatNum5 = 10.0; //整數(shù) 解析為10
var floatNum6 = 3.125e7; //等于31250000

數(shù)字類型只有一個(gè)整數(shù)嚼沿,它有兩種表示方法: 0 可表示為 -0 和 +0("0" 是 +0 的簡寫)估盘。 在實(shí)踐中,這也幾乎沒有影響骡尽。 例如 +0 === -0 為真遣妥。 但是,你可能要注意除以0的時(shí)候:

42 / +0; // Infinity
42 / -0; // -Infinity

2.數(shù)值范圍

表示 描述
Number.MIN_VALUE 最小數(shù)值攀细,一般為5e-324
Number.MAX_VALUE 最大數(shù)值箫踩,一般為1.7976931348623157e+308
Infinity 正無窮,是不能參與計(jì)算的數(shù)值
-Infinity 負(fù)無窮谭贪,是不能參與計(jì)算的數(shù)值

3.NAN

如果參數(shù)無法被轉(zhuǎn)換為數(shù)字境钟,則返回 NaN。

  • 任何涉及NaN的操作(例如NaN/10)都會返回NaN俭识。
  • NaN與任何值都不相等慨削,包括NaN本身。

ECMAScript定義了isNaN()函數(shù)來確定某個(gè)參數(shù)是否“不是數(shù)值”。isNaN()在接收到一個(gè)值之后缚态,會嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值磁椒。某些不是數(shù)值的值會直接轉(zhuǎn)換為數(shù)值,而任何不能被轉(zhuǎn)換為數(shù)值的值都會導(dǎo)致這個(gè)函數(shù)返回true玫芦。

isNaN(NaN);        // true
isNaN(Number.NaN); // true
isNaN(0 / 0)       // true

// e.g. these would have been true with global isNaN()
Number.isNaN("NaN");      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

// These all return false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

將非數(shù)值轉(zhuǎn)換為數(shù)值:Number()浆熔、parseInt()、parseFloat()

Number() 可用于任何數(shù)據(jù)類型

轉(zhuǎn)換規(guī)則:

  • Boolean值:true false分別轉(zhuǎn)換為1 0
  • 數(shù)字值:簡單的傳入和返回
  • null值:0
  • undefined值:返回NaN
  • 字符串:
    • 只包含數(shù)字(包括前面帶正桥帆、負(fù)號)則轉(zhuǎn)換為十進(jìn)制數(shù)值
    • 包含有效的浮點(diǎn)格式蘸拔,如“1.1”,則轉(zhuǎn)換為對應(yīng)的浮點(diǎn)數(shù)
    • 包含有效的十六進(jìn)制格式环葵,如“0xf”调窍,則轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)
    • 字符串為空,則轉(zhuǎn)換為0
    • 字符串中包含除上述格式之外的字符张遭,則轉(zhuǎn)換為NaN
  • 若為對象邓萨,則調(diào)用對象的valueof()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回值菊卷。若轉(zhuǎn)換的結(jié)果是NaN缔恳,則調(diào)用對象的toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回值洁闰。
var num1 = Number("hello world!"); //NaN
var num2 = Number("");             //0
var num3 = Number("000011");       //11
var num4 = Number(true);           //1

//處理整數(shù)常用parseInt()函數(shù)
var num1 = parseInt("1234blue"); //1234
var num2 = parseInt("");         //NaN
var num3 = parseInt("0xA");      //10
var num4 = parseInt(22.5);       //22
var num5 = parseInt("070");      //ECMAScript 3 認(rèn)為是56 八進(jìn)制歉甚,ECMAScript 5 認(rèn)為是70 十進(jìn)制
var num6 = parseInt("70");       //70 十進(jìn)制
var num7 = parseInt("0xf");      //15

//處理浮點(diǎn)數(shù)常用parseFloat()函數(shù)
var num1 = parseFloat("1234blue"); //1234
var num3 = parseFloat("0xA");      //0
var num4 = parseFloat("22.5");     //22.5
var num5 = parseFloat("22.34.5");  //22.34
var num6 = parseFloat("0908.5");   //908.5
var num7 = parseFloat("3.125e7");  //31250000

String類型

1、JavaScript的字符串類型用于表示文本數(shù)據(jù)扑眉。它是一組16位的無符號整數(shù)值的“元素”纸泄。
2、在字符串中的每個(gè)元素占據(jù)了字符串的位置腰素。第一個(gè)元素的索引為0聘裁,下一個(gè)是索引1,依此類推弓千。字符串的長度是它的元素的數(shù)量
3衡便、與 C 語言不同,JavaScript 中字符串是不可變的(譯注:如洋访,JavaScript 中對字符串的操作一定返回了一個(gè)新字符串镣陕,原始字符串并沒有被改變)
Javascript中一切都是object-based。

創(chuàng)建string姻政,也有兩種類型

  1. 使用字面量方式創(chuàng)建的字符串呆抑,為基本類型的 string
    • 實(shí)際上保存就是的值,是一個(gè)基本類型
  2. 使用String()創(chuàng)建的字符串扶歪,為基本類型的 string
  3. 使用構(gòu)造函數(shù) new String()的方式創(chuàng)建的字符串理肺,為對象類型的 string
    • 實(shí)際上保存的是一個(gè)指向字符串對象的指針

轉(zhuǎn)換為字符串

  • 第一種方法:toString() 返回相應(yīng)值的字符串表現(xiàn)(null與undefined值沒有這個(gè)方法)
  • 第二種方法:在不知道轉(zhuǎn)換的值是不是null或undefined情況下,可以用轉(zhuǎn)型函數(shù)String()善镰,能將任何類型的值轉(zhuǎn)換為字符串妹萨。

Object類型

數(shù)據(jù)和功能的集合。是所有對象的基礎(chǔ)炫欺,所有對象都具有Object的基本屬性和方法乎完。

var o = new Object();

var o = new Object; // 有效,但不推薦省略圓括號

①constructor屬性

構(gòu)造函數(shù)屬性,可確定當(dāng)前對象的構(gòu)造函數(shù)品洛。

var o = new Object();
console.log(o.constructor == Object);//true
var arr = new Array();
console.log(arr.constructor == Array);//true

②hasOwnProperty(propertyName)

判斷屬性是否存在于當(dāng)前對象實(shí)例中(而不是在實(shí)例的原型中)树姨。

③isPrototypeOf(object)

判斷傳入的對象是否是當(dāng)前對象的原型

④propertyIsEnumerable(propertyName)

判斷給定的屬性是否能使用for-in語句來枚舉

⑤toLocaleString()

返回對象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對應(yīng)

⑥toString()

返回對象的字符串表示

⑦valueOf()

返回對象的字符串桥状、數(shù)值或布爾值表示


Symbol類型

ES6引入了一種新的原始數(shù)據(jù)類型Symbol帽揪,表示獨(dú)一無二的值。 可以從根本上防止屬性名的沖突辅斟。

Symbol值通過Symbol函數(shù)生成转晰。這就是說,對象的屬性名現(xiàn)在可以有兩種類型士飒,一種是原來就有的字符串查邢,另一種就是新增的Symbol類型。凡是屬性名屬于Symbol類型酵幕,就都是獨(dú)一無二的扰藕,可以保證不會與其他屬性名產(chǎn)生沖突。

let s = Symbol();
typeof s            // "symbol"

上面代碼中芳撒,變量s就是一個(gè)獨(dú)一無二的值邓深。typeof運(yùn)算符的結(jié)果,表明變量s是 Symbol 數(shù)據(jù)類型笔刹,而不是字符串之類的其他類型庐完。

注意, Symbol 函數(shù)前不能使用 new 命令徘熔,否則會報(bào)錯(cuò)门躯。這是因?yàn)樯傻? Symbol 是一個(gè)原始類型的值,不是對象酷师。也就是說讶凉,由于 Symbol 值不是對象,所以不能添加屬性山孔《叮基本上,它是一種類似于字符串的數(shù)據(jù)類型台颠。

Symbol函數(shù)可以接受一個(gè)字符串作為參數(shù)褐望,表示對 Symbol 實(shí)例的描述勒庄,主要是為了在控制臺顯示,或者轉(zhuǎn)為字符串時(shí)瘫里,比較容易區(qū)分实蔽。

var s1 = Symbol('foo');
var s2 = Symbol('bar');
s1 // Symbol(foo)
s2 // Symbol(bar)
s1.toString() // "Symbol(foo)"
s2.toString() // "Symbol(bar)"

上面代碼中,s1和s2是兩個(gè) Symbol 值谨读。如果不加參數(shù)局装,它們在控制臺的輸出都是Symbol(),不利于區(qū)分劳殖。有了參數(shù)以后铐尚,就等于為它們加上了描述,輸出的時(shí)候就能夠分清哆姻,到底是哪一個(gè)值宣增。

注意,Symbol 函數(shù)的參數(shù)只是表示對當(dāng)前 Symbol 值的描述矛缨,因此相同參數(shù)的 Symbol 函數(shù)的返回值是不相等的统舀。

//  沒有參數(shù)的情況
var s1 = Symbol();
var s2 = Symbol();
s1 === s2 // false

//  有參數(shù)的情況
var s1 = Symbol("foo");
var s2 = Symbol("foo");
s1 === s2 // false

上面代碼中,s1和s2都是Symbol函數(shù)的返回值劳景,而且參數(shù)相同誉简,但是它們是不相等的。

由于每一個(gè)Symbol值都是不相等的盟广,這意味著Symbol值可以作為標(biāo)識符闷串,用于對象的屬性名,就能保證不會出現(xiàn)同名的屬性筋量。這對于一個(gè)對象由多個(gè)模塊構(gòu)成的情況非常有用烹吵,能防止某一個(gè)鍵被不小心改寫或覆蓋。Symbol值作為對象屬性名時(shí)桨武,不能用點(diǎn)運(yùn)算符肋拔。在對象的內(nèi)部,使用Symbol值定義屬性時(shí)呀酸,Symbol值必須放在方括號之中凉蜂。

var mySymbol = Symbol();
//  第一種寫法
var a = {};
a[mySymbol] = 'Hello!';
//  第二種寫法
var a = {
[mySymbol]: 'Hello!'
};
//  第三種寫法
var a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
//  以上寫法都得到同樣結(jié)果
a[mySymbol] // "Hello!"

Symbol 值不能與其他類型的值進(jìn)行運(yùn)算,會報(bào)錯(cuò)性誉。

var sym = Symbol('My symbol');
"your symbol is " + sym
// TypeError: can't convert symbol to string
`your symbol is ${sym}`
// TypeError: can't convert symbol to string

但是窿吩, Symbol 值可以顯式轉(zhuǎn)為字符串。

var sym = Symbol('My symbol');
String(sym) // 'Symbol(My symbol)'
sym.toString() // 'Symbol(My symbol)'

Symbol.for() 错览, Symbol.keyFor()

有時(shí)纫雁,我們希望重新使用同一個(gè) Symbol 值,Symbol.for方法可以做到這一點(diǎn)倾哺。它接受一個(gè)字符串作為參數(shù)轧邪,然后搜索有沒有以該參數(shù)作為名稱的Symbol 值刽脖。如果有,就返回這個(gè) Symbol 值忌愚,否則就新建并返回一個(gè)以該字符串為名稱的 Symbol 值曲管。

var s1 = Symbol.for('foo');
var s2 = Symbol.for('foo');
s1 === s2 // true

上面代碼中, s1 和 s2 都是 Symbol 值菜循,但是它們都是同樣參數(shù)的Symbol.for方法生成的翘地,所以實(shí)際上是同一個(gè)值申尤。

Symbol.for()與Symbol()這兩種寫法癌幕,都會生成新的 Symbol 。
區(qū)別:
前者會被登記在全局環(huán)境中供搜索昧穿,后者不會勺远。

  • Symbol.for()不會每次調(diào)用就返回一個(gè)新的 Symbol 類型的值,而是會先檢查給定的 key 是否已經(jīng)存在时鸵,如果不存在才會新建一個(gè)值胶逢。比如,如果你調(diào)用
Symbol.for("cat") 30次饰潜,每次都會返回同一個(gè) Symbol 值初坠,但是調(diào)用Symbol("cat") 30 次,會返回 30 個(gè)不同的 Symbol 值彭雾。
Symbol.for("bar") === Symbol.for("bar")
// true
Symbol("bar") === Symbol("bar")
// false

上面代碼中碟刺,由于Symbol()寫法沒有登記機(jī)制疏唾,所以每次調(diào)用都會返回一個(gè)不同的值份乒。

  • Symbol.keyFor 方法返回一個(gè)已登記的 Symbol 類型值的 key 。
var s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"
var s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined

上面代碼中到忽,變量s2屬于未登記的 Symbol 值吴菠,所以返回undefined者填。

需要注意的是,Symbol.for為 Symbol 值登記的名字做葵,是全局環(huán)境的占哟,可以在不同的 iframe 或 service worker中取到同一個(gè)值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酿矢,一起剝皮案震驚了整個(gè)濱河市重挑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棠涮,老刑警劉巖谬哀,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異严肪,居然都是意外死亡史煎,警方通過查閱死者的電腦和手機(jī)谦屑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篇梭,“玉大人氢橙,你說我怎么就攤上這事√裢担” “怎么了悍手?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袍患。 經(jīng)常有香客問我坦康,道長,這世上最難降的妖魔是什么诡延? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任滞欠,我火速辦了婚禮,結(jié)果婚禮上肆良,老公的妹妹穿的比我還像新娘筛璧。我一直安慰自己,他們只是感情好惹恃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布夭谤。 她就那樣靜靜地躺著,像睡著了一般巫糙。 火紅的嫁衣襯著肌膚如雪朗儒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天曲秉,我揣著相機(jī)與錄音采蚀,去河邊找鬼。 笑死承二,一個(gè)胖子當(dāng)著我的面吹牛榆鼠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亥鸠,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼妆够,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了负蚊?” 一聲冷哼從身側(cè)響起神妹,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎家妆,沒想到半個(gè)月后鸵荠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伤极,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年蛹找,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姨伤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庸疾,死狀恐怖乍楚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情届慈,我是刑警寧澤徒溪,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站金顿,受9級特大地震影響臊泌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜串绩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一缺虐、第九天 我趴在偏房一處隱蔽的房頂上張望芜壁。 院中可真熱鬧礁凡,春花似錦、人聲如沸慧妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塞淹。三九已至窟蓝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饱普,已是汗流浹背运挫。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留套耕,地道東北人谁帕。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像冯袍,于是被迫代替她去往敵國和親匈挖。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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