首页 > CMS教程 > WordPress > 正文

使用基本字符串、数字和布尔值

PHPz
发布: 2023-08-29 18:25:02
原创
1082人浏览过

使用基本字符串、数字和布尔值

不要对字符串、数字和布尔文字可以被视为具有属性的对象这一事实感到困惑(例如,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 运算符来根据这些基本类型识别字符串、数字或布尔值,则应避免使用 String、Number 和 Boolean 构造函数。

以上就是使用基本字符串、数字和布尔值的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号