JavaScript读书笔记(五)类型转换

本文深入讲解JavaScript中的类型转换,包括等于运算符与恒等运算符的区别、显式类型转换和隐式类型转换的过程,以及对象如何转换为原始值。通过具体示例帮助读者更好地理解这些概念。

参照内容来自《JavaScript权威指南》

类型转换

转换和相等性:

(1)"=="等于运算符在判断两个值是否相等时有时会发生类型转换,"==="恒等运算符在判断相等时不会做任何类型转换。

(2)类型转换过程中,转换前的值并不等于转换后的值。


显式类型转换:

(1)显示类型转换可以使用Boolean()、Number()、String()或Object()函数。例如:

Number("3");

String(false);

String(true);

false.toString();

true.toString();

Boolean([ ]);

Boolean(null);

Object(3); //等于new number(3)

(2)除了null和undefined之外任何值都有toString()方法。toString()与String()方法返回的结果一致。

(3)null和undefined直接转换为对象,则会抛出一个类型错误(TypeError)。如果使用Object()函数,则不会抛出异常,它仅简单地返回一个新创建的空对象。

(4)toString()方法可以接收转换基数(范围在2至36之间),toString()方法默认转换为十进制的。例如:

var a = "2";

a1 = a.toString(2); //二进制

a2 = "0" + a.toString(8); //八进制

a3 = "0x" + a.toString(16); //十六进制

隐式转换:

(1)+运算符的操作数中有一个是字符串,则会将其他操作数转换为字符串。

(2)一元“+”运算符将其操作数转换为数字。例如:+a 等价于Number(a)

(3)一元“!”运算符将其操作数转换为布尔值并取反。例如:

!! x // 等价于 Boolean(x). 注意是双叹号,x先转换为true(或者false),然后取反,变为false(或者true),此时已经是布尔值了,所以不用将操作数转换为布尔值,再次取反,还是得到true(或者false)。

对象转换为原始值

(1)所有的对象(包括数组和函数,包装对象)都会转换为true。

(2)所有的对象都会继承两个转换方法,分别是toString()和valueOf()。

toString():

对象包括普通的对象,函数,数组。

对于部分对象:例如:({x:1, y:2}).toString() // => "[object Object]

对于RegExp对象:转换为表示正则表达式直接量的字符串。例如:/\d+/g.toString() // => "/\\d+/g"

对于数组:例如:var a = [11, 12, 13]; a.toString(); //  =>"11,12,13"(一个包含逗号的字符串)

对于函数:将用户自定义的函数转换为JavaScript源代码字符串。

例如:(function(x) { f(x); }).toString() // => "function(x) {\n f(x);\n}"

对于日期类:返回了一个可被JavaScript解析的日期和时间字符串。

例如:new Date(2010,0,1).toString() // => "Fri Jan 01 2010 00:00:00 GMT-0800 (PST)"

valueOf():

对于对象:如果对象是复合值(一般情况下对象均为复合值),valueOf()方法默认返回对象本身。数组、函数和正则表达式的valueOf()方法只是简单返回对象本身。日期类定义的valueOf()方法返回自1970年1月1日以来的毫秒数。例如:new Date(2018,5,27).valueOf();

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值