一道typeof面试题
【摘要】 最近在刷面试题的时候,看到了这样一道题: 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的+。
有三个规则:
- 数字+字符串,数字被转换成字符串,+变成了字符串链接符号。
- 数字+原始类型,另一侧为原始类型,原始类型被传换成数字。
- 数字+引用类型,另一侧是引用类型的时候,将引用类型和数字转换成字符串,进行拼接。
js中的减、乘、除
- 对于不同减、乘、除,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:
- Number
- NaN
string
- String
object
- Object
- null
- Array
function
- Function
undefined
- Undefined
boolean
- Boolean
symbol
- 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)