[JavaScript初级面试]2. JS基础-变量类型和计算
2021/9/2 11:06:06
本文主要是介绍[JavaScript初级面试]2. JS基础-变量类型和计算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目
- typeof能判断哪些类型
- 何时使用
===
何时使用==
- 值类型和引用类型的区别
- 如何实现深拷贝
值类型和引用类型
示例
// 值类型 let a = 100 let b = a a = 200 console.log(b) // 100 // 引用类型 let a = { age : 20 } let b = a b.age = 21 console.log(a.age) // 21
值类型在栈中存储:
引用类型在堆中存储:(为了节省内存,复用数据)
常见值类型
let a // undefined const s = 'abc' const n = 1000 const b = true const s = Symbol('s')
常见引用类型
cosnt obj = { x : 100 } const arr = [1, 2, 3] const n = null //特殊引用类型,指针指向空地址 function fn(){} //特殊引用类型,不用于存储数据,没有拷贝,复制的问题
typeof
可以识别出所有的值类型
let a typeof a// undefined const s = 'abc' typeof s // string const n = 1000 typeof n // number const b = true typeof b // boolean const s = Symbol('s') typeof s // symbol
可以识别函数
typeof console.log // function typeof function(){} // function
可以判断是否是引用类型(Object)不可再细分
typeof null // object typeof [1,2] // object typeof {x:100} // object
深拷贝(引用类型的复制)
// 前提:对象内的属性,只能是值类型,function,Array // 普通Object(非Map,Set等其他特殊对象) // for-in 无法遍历Map,Set等 // JSON.stringfy会丢失Map,Set内部信息,只返回一个空{} function deepClone(obj = {}){ if(typeof obj !== 'object' || obj == null){ return obj // 如果是值类型,function,null直接返回 } let result if(obj instanceof Array) result = [] } else { result = {} } for(let key in obj){ // for-of 循环只能遍历iterable if(obj.hasOwnProperty(key)){ // 保证key不是当前对象原型链上的属性 result[key] = deepClone(obj[key]) // 递归调用 } } return result }
类型转换
可能发生类型转换的场景:
1.字符串拼接
const a = 100 + 10 // 110 const b = 100 + '10' // '10010' const c = true + '10' // 'true10'
使用parseInt or ParseFloat可以把变量转为相应的数字
2.==
100 == '100' // true 0 == '' // true 0 == false // true null == undefined // true
==
会尽量转换两侧的操作数,让他们转换为最可能相等的类型,从而趋向于相等
除了判断一个变量 == null
之外,其余一律用 ===
;
obj == null
等同于 obj === null || obj === undefined
3.if语句
falsely
变量:!!a === false
!!0 === false !!NaN === false !!'' === false !!null === false !!undefined === false !!false === false
truely
变量:!!a === true
除了上面的falsly
变量外,都是truely
变量
if(变量){ // 当变量是truely变量时,执行 }else{ // 当变量是falsly变量时,执行 }
4.逻辑运算
// 与 运算,如果有一个为false,则返回它; // 如果没有一个false,则返回第一个为true的 0 && 10 => 0 10 && 0 => 10 // 或 运算,只返回(或执行)可以转化为true的表达式,变量,函数,对象等 0 || 10 => 10 10 || 0 => 10
这篇关于[JavaScript初级面试]2. JS基础-变量类型和计算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具