当面试官让你说说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。

相关推荐
masa01023 分钟前
JavaScript--JavaScript基础
开发语言·javascript
一只特立独行的猪6111 小时前
Java面试——集合篇
java·开发语言·面试
让开,我要吃人了2 小时前
HarmonyOS开发实战(5.0)实现二楼上划进入首页效果详解
前端·华为·程序员·移动开发·harmonyos·鸿蒙·鸿蒙系统
everyStudy3 小时前
前端五种排序
前端·算法·排序算法
甜兒.4 小时前
鸿蒙小技巧
前端·华为·typescript·harmonyos
她似晚风般温柔7897 小时前
Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)
开发语言·javascript·uni-app
王中阳Go7 小时前
字节跳动的微服务独家面经
微服务·面试·golang
Jiaberrr8 小时前
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
前端·javascript·vue.js·微信小程序·uni-app
everyStudy8 小时前
JS中判断字符串中是否包含指定字符
开发语言·前端·javascript
城南云小白8 小时前
web基础+http协议+httpd详细配置
前端·网络协议·http