Js基础内容 · 变量和计算
文章目录
一、数据类型
1.值类型
let a = 'zhangsan'
let b = 123
let c = true
let d = Symbol("KK")
let e
typeof a // 字符串
typeof b // 数字
typeof c // 布尔
typeof d // 独一无二
typeof e // undefined
值类型储存在“栈”中,栈是独立空间,赋值不会相互影响。
let a = 100
let b = a
b =110
console.log(a)//100
2. 引用类型
let = a
let obj = {name:123}
let arr = [1,2,3]
function fn (){}
typeof a //null
typeof obj //"object"
typeof obj //"object"
typeof fn //"function"
引用类型存在于堆中。
let obj = {name :'zhangsan'}
let obj2 = obj
obj2.name = 'lisi'
console.log(obj.name)//lisi
3.深度拷贝
function clone (obj={}){
if(typeof obj !== 'object' || obj == null){
return obj
}
let resule
if(obj instanceof Array){
resule = []
}else{
resule ={}
}
for(let key in obj ){
if(obj.hasOwnProperty(key)){
resule[key] = clone(obj[key])
}
}
return resule
}
4.typeof 运算符可以判断什么数据类型?
- 值类型
- 方法类型
- 所有的值类型都是Object
二、值计算
1.加法和字符串拼接
let a = 100+10 //110
let b = 100+"10" //10010
let c = true +'10' //true10
在js中 + 和拼接是一样的,如何解决呢?
let d = 100+parseInt('10') //110
2. == 运算符
100==‘100‘
0==""
0==false
null == undefined
== 努力做到两面相等
什么时候用 == 和 ===
除了 判断 null和undefined外,都是===
3.if语句和逻辑运算符
- truly
代码解释:!!a = true - falsly
代码解释:!!a = false
0
NaN
null
undefined
false