日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

(四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】

發(fā)布時間:2023/12/31 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JS基礎(chǔ)知識一(變量類型和計算)

  • 提問
  • 變量類型
      • 值類型 vs 引用類型 (堆棧模型)
        • 值類型
        • 引用類型
      • typeof 運算符
      • 深拷貝
  • 變量計算
      • 字符串拼接
      • ==
      • if語句和邏輯運算
        • if語句
        • 邏輯判斷

提問

  • typeof 能判斷哪些類型
  • 何時使用=何時使用
  • 值類型和引用類型區(qū)別
  • 手寫深拷貝

變量類型

值類型 vs 引用類型 (堆棧模型)

值類型

//常見值類型 let a //undefined const s = 'abc' //string const n = 100 //number const b = true //boolean const s = symbol('s') //symbol //值類型 let a = 100 let b = a a = 200 console.log(b) //100

引用類型

//常見引用類型 const obj = { x: 100 } const arr = ['a', 'b', 'c'] const n = null //特殊引用類型,指針指向空地址 //特殊引用類型,但不用于存儲數(shù)據(jù),沒有"拷貝"、"復(fù)制函數(shù)"這一說 function fn(){} //引用類型 let a = { age: 20 } let b = a b.age = 21 console.log(a.age) //21

typeof 運算符

  • 識別所有值類型(undefined、string、number、boolean、symbol)
  • 識別函數(shù) function
console.log(typeof console.log) //function console.log(typeof function(){}) //function
  • 判斷是否是引用類型(不可再細分
console.log(typeof null) //object console.log(typeof {x:100}) //object

深拷貝

  • 注意判斷值類型和引用類型
  • 注意判斷數(shù)組還是對象
  • 遞歸
/*** 深拷貝* @param {Object} obj 要拷貝的對象*/ function deepClone(obj = {}) {if (typeof obj !== 'object' || obj == null) {// obj 是 null ,或者不是對象和數(shù)組,直接返回return obj}// 初始化返回結(jié)果let resultif (obj instanceof Array) {result = []} else {result = {}}for (let key in obj) {// 保證 key 不是原型的屬性if (obj.hasOwnProperty(key)) {// 遞歸調(diào)用!!!result[key] = deepClone(obj[key])}}// 返回結(jié)果return result } const obj1 = {age: 20,name: 'xxx',address: {city: 'beijing'},arr: ['a', 'b', 'c'] }const obj2 = deepClone(obj1) obj2.address.city = 'shanghai' obj2.arr[0] = 'a1' console.log(obj1.address.city) console.log(obj1.arr[0])

變量計算

字符串拼接

console.log(100 + '20') //10020

任何類型內(nèi)容+字符串類型內(nèi)容相當(dāng)于字符串拼接,注意轉(zhuǎn)換類型

==

100 == '100' //true 0 == '' //true 0 == false //true false == '' //true null == undefined //true //除了==null之外,其他一律用===,例如 const obj = { x: 100 } if(obj.a == null){ } //相當(dāng)于if(obj.a === null || obj.a === undefined){}

if語句和邏輯運算

if語句

  • truly變量:!!a === true的變量
    if語句中只有truly變量才會執(zhí)行
  • falsely變量:!!a === false的變量
    除了!!0、!!NaN、!!’’、!!null、!!undefined、!!false,其他都是truly變量

邏輯判斷

  • &&
  • ||
  • !
console.log(10 && 0) //0 console.log(0 && 10) //0 console.log('' || 'abc') //'abc' console.log('abc' || '') //'abc' console.log(!window.abc) //true

總結(jié)

以上是生活随笔為你收集整理的(四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。