Maison  >  Article  >  Tutoriel CMS  >  Utiliser des chaînes de base, des nombres et des valeurs booléennes

Utiliser des chaînes de base, des nombres et des valeurs booléennes

PHPz
PHPzoriginal
2023-08-29 18:25:021027parcourir

Utiliser des chaînes de base, des nombres et des valeurs booléennes

Ne soyez pas dérouté par le fait que les chaînes, les nombres et les littéraux booléens peuvent être considérés comme des objets dotés de propriétés (par exemple, true.toString()). Lorsque ces valeurs primitives sont traitées comme des objets en essayant d'accéder à leurs propriétés, JavaScript créera un objet wrapper à partir du constructeur associé à la primitive afin que les propriétés et méthodes de l'objet wrapper soient accessibles.

Une fois la propriété accédée, l'objet wrapper est supprimé. Cette conversion nous permet d'écrire du code qui donne l'impression que la valeur d'origine est en réalité un objet. Pour être honnête, lorsqu'il est traité comme un objet dans le code, JavaScript le convertit en objet afin que l'accès aux propriétés puisse fonctionner, puis le reconvertit à la valeur d'origine après avoir renvoyé la valeur. L'élément clé à noter ici est ce qui se passe, et JavaScript le fait pour vous en coulisses.


Échantillon de valeur originale

Voici quelques exemples pour démontrer de quoi je parle :

Exemple de chaîne : 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>

Exemple numérique : 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>

Exemple booléen : 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>

Lors de l'accès direct aux propriétés d'un nombre brut (non stocké dans une variable), le nombre doit être calculé avant que la valeur puisse être traitée comme un objet (par exemple, (1).toString();1..toString();). Pourquoi deux points ? Le premier point est traité comme une décimale numérique et non comme un opérateur utilisé pour accéder aux propriétés de l'objet.


Vous devez généralement utiliser des chaînes brutes, des nombres et des booléens

Les valeurs littérales/brutes représentant des chaînes, des nombres ou des valeurs booléennes sont écrites plus rapidement et sous une forme littérale plus concise.

Par conséquent, vous devez utiliser des valeurs littérales. Aussi, typeof 运算符的准确性取决于您创建值的方式(文字与构造函数调用)。如果您创建字符串、数字或布尔对象,则 typeof 运算符会将类型报告为对象。如果您使用文字,则 typeof 运算符将返回实际值类型的字符串名称(例如,typeof 'foo' // returns 'string').

Je démontre ce fait dans le code ci-dessous.

Exemple : 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>

Conclusion

Si votre programme dépend du typeof 运算符来根据这些基本类型识别字符串、数字或布尔值,则应避免使用 StringNumberBoolean constructeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn