最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【二】基礎類型

2023-08-13 14:41 作者:馳驥  | 我要投稿


前言

本篇博客旨在清晰認識JS六種基礎類型以及特征。


面試回答

基礎類型:值類型有string、number、Boolean、undefined、null、Symbol。值類型是棧內(nèi)存,占用空間固定,保存和復制的是值本身。一般我們用typeof去判斷值類型,不過不能用來判斷null,因為null在內(nèi)存中屬于引用類型,只不過因為方便效率所以歸為值類型。至于typeof的檢測原理,涉及信息儲存和機器碼的問題,就沒有深入了。


知識點

基礎類型都是棧(stack),簡單理解一下,有兩個特征:1. 保存和復制值的本身。2.占用空間固定, 棧內(nèi)存中,由操作系統(tǒng)自動分配內(nèi)存空間,自動釋放。

1.Boolean

對于Boolean類型就一句話:undefined、null、""、0、NaN、false除了這6個值在js中屬于假值,其他均為真值。

2.Undefined

定義

undefined 表示聲明了變量但未對其初始化時賦予該變量值的返回值。

應用場景

1.返回undefined場景

3.Null

定義

已定義,且表示"無"的值

對于null與undefined的異同可以從內(nèi)存角度看:null在內(nèi)存里屬于引用類型,undefined在內(nèi)存里屬于基本類型。所以typeof null 的輸出為Object,typeof undefined 的輸出為undefined。之所以把null歸為基本類型,是因為"效率"。當然,日常開發(fā)中,為了方便使用,將null理解為:聲明并賦值的變量,該變量的值為null;將undefined理解為:聲明變量,但沒有賦值的返回值

4.Number

應用場景

1.精度問題

JavaScript 采用“IEEE 754 標準定義的雙精度64位格式” ,所以會出現(xiàn)精度缺失的異常情況。

解決辦法:

乘除法

toFixed(n):保留n位小數(shù),不準確,且n不能過大。

2.添加千分位

toLocaleString()

當然復雜特殊的添加千分號就不滿足了,需要自定義,思路如下:

5.String

常用API

indexOf(): 返回字符串中指定文本首次出現(xiàn)的索引位置

split():根據(jù)參數(shù)將字符串分割,輸出為數(shù)組

trim():去掉字符串兩端的空格

replace() : 根據(jù)參數(shù)替換指定字符

toLowerCase():把字符串轉換成小寫

toUpperCase():把字符串轉換成大寫

parseInt() :把字符串轉換成整數(shù)

parseFloat() :把字符串轉換成數(shù)字

6.Symbol

定義

"Symbol" ,表示唯一的標識符。

特點1:Symbol具有唯一性,即使用同一"描述"生成的值也不相等

特點2:Symbol具有隱藏性,這個特點使Symbol類型受到保護,防止被意外使用或重寫,不過可以通過Object.getOwnPropertySymbols方法讀取到

相關API

創(chuàng)建Symbol

Symbol():Symbol()定義的值不放入全局symbol注冊表中,每次都是新建,即使描述相同值也不相等,即無法被Symbol.for()查詢到對應的值,所以創(chuàng)建Symbol也推薦使用Symbol.for()創(chuàng)建,除非你不打算獲取Symbol()的值。

查詢Symbol的值

Symbol.for:接受一個"描述"作為參數(shù),然后全局環(huán)境中搜索是否有以該參數(shù)注冊的Symbol值。如果有,就返回這個Symbol值。沒有就創(chuàng)建并返回一個以該字符串作為名稱的Symbol值,并放入一個全局 symbol 注冊表中。

查詢Symbol的描述

Symbol.keyFor():接受一個"變量名"作為參數(shù),返回一個 Symbol的"描述"

應用場景

1.替代常量 :保證常量的唯一性

代碼里經(jīng)常會使用常量來控制業(yè)務邏輯關系,如果常量少還比較好維護,但是常量一多,光是維護值得唯一性就是一項不小的工作。使用Symbol,可以保證常量的唯一性,也可以使代碼相對優(yōu)雅規(guī)范一些。

2.作為屬性名或變量名,避免重名帶來的問題;作為屬性名,必須使用[]運算符來定義和獲??;

3.作為內(nèi)置對象的特定方法的屬性名,方便開發(fā)者對其重寫,相當于定義類的私有屬性/方法

4.注意事項

對象的合并、覆蓋、使用用JSON.stringify()將對象轉換成JSON字符串的時候,Symbol屬性會被排除在輸出內(nèi)容之外;

for...in ,object.key()等方法訪問不到;

不會被隱式轉換,如alert等,非要顯示需要在它上面調(diào)用toString()方法, Symbol("id").toString()


應用

1. || 、&&操作符的返回結果

我們經(jīng)常根據(jù)某幾個變量做if判斷,如何確認判斷結果是你想要的,可以使用下面這種方法:先確定返回結果,再根據(jù)"undefined、null、""、0、NaN、false除了這6個值在js中屬于假值,其他均為真值",那么我們便需要知道基本數(shù)據(jù)類型及引用數(shù)據(jù)類型的操作符返回結果:

2.隱式類型轉換


最后

走過路過,不要錯過,點贊、收藏、評論三連~

【二】基礎類型的評論 (共 條)

分享到微博請遵守國家法律
肥西县| 南靖县| 扶绥县| 静乐县| 恩平市| 通海县| 青神县| 昆山市| 民县| 龙川县| 永德县| 苍山县| 汝阳县| 宁都县| 象州县| 封丘县| 南郑县| 北川| 延庆县| 灌南县| 千阳县| 阿克| 北流市| 虎林市| 黄浦区| 西盟| 昔阳县| 聂荣县| 呼和浩特市| 肇源县| 谢通门县| 蛟河市| 清远市| 通城县| 山阴县| 博乐市| 饶平县| 房山区| 万山特区| 乌兰县| 盐边县|