一道typeof面试题

举报
搞前端的半夏 发表于 2022/01/24 23:17:34 2022/01/24
【摘要】 最近在刷面试题的时候,看到了这样一道题: let str='1' str+=!str console.log(typeof str)在第一行中,我们定义了变量str并将其初始化为值为 的字符串1。在第二行中,有两个类型转换。首先是!str转换成了false,因为这里的str是有值的。!’'就是true首先!str给我们false,然后+false转换boolean为数字0。最后,在第三...

最近在刷面试题的时候,看到了这样一道题:

  let str='1'
  str+=!str
  console.log(typeof str)

在第一行中,我们定义了变量str并将其初始化为值为 的字符串1。

在第二行中,有两个类型转换。

首先是!str转换成了false,因为这里的str是有值的。!’'就是true
首先!str给我们false,然后+false转换boolean为数字0。

最后,在第三行,typeof操作符查找当前类型str是number。

最终结果:‘number’。

这道题主要考察了js隐式转换的知识。
对于js的+。
有三个规则:

  1. 数字+字符串,数字被转换成字符串,+变成了字符串链接符号。
  2. 数字+原始类型,另一侧为原始类型,原始类型被传换成数字。
  3. 数字+引用类型,另一侧是引用类型的时候,将引用类型和数字转换成字符串,进行拼接。

js中的减、乘、除

  1. 对于不同减、乘、除,js会将非Number类型的数据
1 - true // 0, 首先把 true 转换为数字 1, 然后执行 1 - 1
1 - null // 1,  首先把 null 转换为数字 0, 然后执行 1 - 0
1 * undefined //  NaN, undefined 转换为数字是 NaN
1 * ['2'] //  2, ['2']首先会变成 '2', 然后再变成数字 2
123 + '123' // 123123  
123 + null  // 123   
123 + true // 124    
123 + {}  // 123[object Object] 

typeof对不同的数据类型可能出现的结果:

Number:

  1. Number
  2. NaN

string

  1. String

object

  1. Object
  2. null
  3. Array

function

  1. Function

undefined

  1. Undefined

boolean

  1. Boolean

symbol

  1. Symbol

举例

var a = 123;
console.log(typeof a);  //  number

var b = "typeof";
console.log(typeof b);  //  string

var c = {};
console.log(typeof c);  //  object

var d = [];
console.log(typeof d);  //  object


var e = false;
console.log(typeof e);  //  boolean

function Person(name){
  this.name = name;
}

console.log(typeof Person); //  function

var f = new Person("前端");
console.log(typeof f);  //  object

console.log(typeof undefined);  //  undefined
console.log(typeof null); //  object

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。