使用基本字串、數字和布林值

PHPz
發布: 2023-08-29 18:25:02
原創
1053 人瀏覽過

使用基本字串、數字和布林值

不要對字串、數字和布林文字可以被視為具有屬性的物件這一事實感到困惑(例如,true.toString())。當這些基元值透過嘗試存取其屬性而被視為對象時,JavaScript 將從基元的關聯構造函數建立包裝器對象,以便可以存取包裝器物件的屬性和方法。

#一旦存取了屬性,包裝器物件就會被丟棄。這種轉換允許我們編寫程式碼,使其看起來好像原始值實際上是一個物件。說實話,當它在程式碼中被視為物件時,JavaScript 會將其轉換為對象,以便屬性存取可以工作,然後在返回值後將其轉換回原始值。這裡需要注意的關鍵是正在發生的事情,而 JavaScript 正在幕後為您做這件事。


原始值樣本

這裡有一些範例來示範我正在談論的內容:

字串範例:sample56.html

#
<!DOCTYPE html><html lang="en"><body><script>

	// String object treated like an object.
	var stringObject = new String('foo');
	console.log(stringObject.length); // Logs 3.
	console.log(stringObject['length']); // Logs 3.

	// String literal/primitive converted to an object when treated as an object.
	var stringLiteral = 'foo';
	console.log(stringLiteral.length); // Logs 3.
	console.log(stringLiteral['length']); // Logs 3.
	console.log('bar'.length); // Logs 3.
	console.log('bar'['length']); // Logs 3.

</script></body></html>
登入後複製

數字範例:sample57.html

#
<!DOCTYPE html><html lang="en"><body><script>

	// Number object treated like an object.
	var numberObject = new Number(1.10023);
	console.log(numberObject.toFixed()); // Logs 1.
	console.log(numberObject['toFixed']()); // Logs 1.

	// Number literal/primitive converted to an object when treated as an object.
	var numberLiteral = 1.10023;
	console.log(numberLiteral.toFixed()); // Logs 1.
	console.log(numberLiteral['toFixed']()); // Logs 1.
	console.log((1234).toString()); // Logs '1234'.
	console.log(1234['toString']()); // Logs '1234'.

</script></body></html>
登入後複製

布林範例:sample58.html

#
<!DOCTYPE html><html lang="en"><body><script>

	// Boolean object treated like an object.
	var booleanObject = new Boolean(0);
	console.log(booleanObject.toString()); // Logs 'false'.
	console.log(booleanObject['toString']()); // Logs 'false'.

	// Boolean literal/primitive converted to an object when treated as an object.
	var booleanLiteral = false;
	console.log(booleanLiteral.toString()); // Logs 'false'.
	console.log(booleanLiteral['toString']()); // Logs 'false'.
	console.log((true).toString()); // Logs 'true'.
	console.log(true['toString']()); // Logs 'true'.

</script></body></html>
登入後複製

直接存取原始數字的屬性(不儲存在變數中)時,必須先計算該數字,然後才能將該值視為物件(例如, (1).toString();1..toString();)。為什麼是兩個點?第一個點被視為數字小數,而不是用於存取物件屬性的運算子。


您通常應該使用原始字串、數字和布林值

表示字串、數字或布林值的文字/原始值的書寫速度更快,而且文字形式更簡潔。

因此,您應該使用文字值。此外, typeof 運算子的準確性取決於您建立值的方式(文字與建構函式呼叫)。如果您建立字串、數字或布林對象,則 typeof 運算子會將類型報告為物件。如果您使用文字,則 typeof 運算子將傳回實際值類型的字串名稱(例如,typeof 'foo' // returns 'string')。

我在下面的程式碼中演示了這一事實。

範例:sample59.html

<!DOCTYPE html><html lang="en"><body><script>

	// String, number, and Boolean objects.
	console.log(typeof new String('foo')); // Logs 'object'.
	console.log(typeof new Number(1)); // Logs 'object'.
	console.log(typeof new Boolean(true)); // Logs 'object'.

	// String, number, and Boolean literals/primitives.
	console.log(typeof 'foo'); // Logs 'string'.
	console.log(typeof 1); // Logs 'number'.
	console.log(typeof true); // Logs 'boolean'.

</script></body></html>
登入後複製

結論

如果您的程式依賴typeof 運算子來根據這些基本類型識別字串、數字或布林值,則應避免使用StringNumberBoolean 建構子。

以上是使用基本字串、數字和布林值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!