当面试官让你说说js当中的类型转换 你该怎么回答?

当面试官让你谈谈js当中的类型转换 你该怎么去回答?

哈喽哈喽,我是你们的金樽清酒。在这个金三银四面试盛行的黄金时期。大家是不是都在背面经准备面试冲击大厂呢?小编也在整理js的考点,与大家一起努力加油。今天就让我们谈谈当面试官让你谈谈类型转换的时候你该怎么去回答呢?

当面试官让你谈谈js当中的类型转换

当面试官让你说说一个东西的时候。小伙伴们肯定千言万语在心中,什么都想说,却什么也说不出来,就差点想把脑袋里面的东西给面试官看了,可惜面试官不会理会你脑子里有多少东西,而是你能说出来多少东西。那怎么有条理的把自己知道的东西呈现出来,让面试官折服呢?别急,通过这篇文章我们就能够知道如何去应付面试官呢?

  • 什么是类型转换 提到什么是类型转换,那我们首先得知道有哪些数据类型。这个可以跟面试官娓娓道来。

原始类型:number string boolean symbol null undefined Bigint

引用类型:Object Function Array Date RegExp Map Set WeakMap WeakSet js当中的类型转换就是将一种数据类型转换成另一种数据类型。其中我们在日常开发的过程中,通常会用到一种显示的类型转换来完成逻辑开发。比如转换成number,string,用number()和string()方法。可以将一种数据类型转换为其他数据类型。

在我们谈完显示转换类型的时候,自然就会说出另一种转换机制-隐式转换。我们可以这么说:

在v8的执行过程中,还存在另一种转换机制,那就是隐式转换。JavaScript是弱类型语言,这意味着它不像Java,C++一样的强类型语言有预先确定的类型。 并且变量的类型是由值的类型来决定的,这导致了一个问题,一个变量可能上一步骤操作中还是String,下一步操作可能立刻变为了Object,为了解决不同类型无法进行计算,JS底层会将不同类型转换为同一类型,由JS运行环境自动帮我们去做的类型转换,称为隐式类型转换。通常在发生在逻辑运算符和算数运算符当中。

  • 隐式转换的规则

在发生隐式转换的,js当中会自动的执行一个toPrimitive函数,将引用类型转换成原始类型。toPrimitive中有两个参数,一个输入值,一个要转换成的类型。如果是原始类型,直接返回。 input是输入的值,preferedType是期望转换的类型,他可以是字符串,也可以是数字。

如果转换的类型是number,会执行以下步骤:

  1. 如果input是原始值,直接返回这个值;

  2. 否则,如果input是对象,调用input.valueOf(),如果结果是原始值,返回结果;

  3. 否则,调用input.toString()。如果结果是原始值,返回结果;

  4. 否则,抛出错误。

如果转换的类型是String,2和3会交换执行,即先执行toString()方法。

你也可以省略preferedType,此时,日期会被认为是字符串,而其他的值会被当做Number。

也就是说toPrimitive将引用类型转换为原始类型的时候会执行两个方法。valueOf()和toString(),当期待转换的类型不一样的时候这两个方法的的执行顺序会不一样。

经典考题

\]==!\[

请你分析一下结果是true,还是false,让我们来分析一下。 首先存在逻辑运算符,会存在隐式转换,将引用类型转换成原始类型,js会自动调用toPrimitive函数。

!的优先级更高,[]会被默认转换成true,!取反,所以会变成

1.[]==false

一边为引用类型,一边为原始类型会将左边也变为原始类型,[]为'0'

2.'0'==false

== 会将原始数据类型都转换成number类型 '0'转为0,false也会转为0,所以得到0==0

3.0==0

结果为true。

总结

当面试官要你谈谈js中的类型转换的时候,我们要尽量的回答完整,可以先从js当中有哪些类型入手,引出类型转换的分类,显示转换,隐式转换。隐式转换又有一个重要的转换规则,在js当中自动的执行,将引用类型转换为原始类型。好了,相信大家在看了这篇文章之后可以轻松的面对面试官的回答,让面试官为你折服,求着你去上班,祝大家好运,早日拿到心仪的offer。

相关推荐
人工智能训练1 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪2 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9222 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233223 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88214 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1364 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠5 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_949833395 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
珑墨5 小时前
【Turbo】使用介绍
前端
军军君016 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three