JavaScript常量與數(shù)據(jù)類型及使用場景分析
常量
概念:使用 const 聲明的變量稱為“常量”。
使用場景:當(dāng)某個變量永遠(yuǎn)不會改變的時候,就可以使用 const 來聲明,而不是let。
命名規(guī)范:和變量一致
const PI = 3.14
注意: 常量不允許重新賦值,聲明的時候必須賦值(初始化)
數(shù)據(jù)類型
計算機(jī)世界中的萬事成物都是數(shù)據(jù)。
計算機(jī)程序可以處理大量的數(shù)據(jù),為了方便數(shù)據(jù)的管理,將數(shù)據(jù)分成了不同的類型,
js數(shù)據(jù)類型則主要分為兩類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型
其中:
基本數(shù)據(jù)類型分為:
- number數(shù)字型
- string字符串型
- boolean布爾型
- undefined未定義型
- null空類型
引用數(shù)據(jù)類型:
- object對象
注:通過 typeof 關(guān)鍵字檢測數(shù)據(jù)類型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 數(shù)據(jù)類型</title>
</head>
<body>
<script>
// 檢測 1 是什么類型數(shù)據(jù),結(jié)果為 number
document.write(typeof 1)
document.write(typeof '你好') //結(jié)果為string
//注意 從單選框多選框表單獲得的值默認(rèn)為字符串
let num = prompt('請輸入一個數(shù)字:')
document.write(typeof num) //結(jié)果為string
</script>
</body>
</html>注意:在使用表單、prompt獲取過來的值默認(rèn)是字符串,此時不能對其進(jìn)行簡單地加法運(yùn)算。因此類型轉(zhuǎn)換很重要。
數(shù)字類型
即我們數(shù)學(xué)中學(xué)習(xí)到的數(shù)字,可以是整數(shù)、小數(shù)、正數(shù)、負(fù)數(shù)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 數(shù)據(jù)類型</title>
</head>
<body>
<script>
let score = 100 // 正整數(shù)
let price = 12.345 // 小數(shù)
let temperature = -40 // 負(fù)數(shù)
?
document.write(typeof score) // 結(jié)果為 number
document.write(typeof price) // 結(jié)果為 number
document.write(typeof temperature) // 結(jié)果為 number
</script>
</body>
</html>JavaScript 中的數(shù)值類型與數(shù)學(xué)中的數(shù)字是一樣的,分為正數(shù)、負(fù)數(shù)、小數(shù)等。
JavaScript是一門弱數(shù)據(jù)類型的語言,變量到底是屬于哪種類型,只有賦值后才能確認(rèn),反觀,Java是強(qiáng)數(shù)據(jù)類型,例如 int a = 3 我們知道a一定是整數(shù)。而 let a,不賦值真不知道是什么數(shù)。
基本的算輸符號這里不多解釋。注意區(qū)分'/'(取除數(shù))和'%'(取余數(shù))即可
算一下:3%5=3,只要前面的數(shù)比后面的數(shù)小,結(jié)果就取前面的數(shù)。
優(yōu)先級為:
- 乘、除、取余相同,加減相同
- 乘除取余大于加減
- 使用()可提升優(yōu)先級
總之,先乘除后加減,有括號先括號
在數(shù)字類型中,有一個特殊的值NAN,它代表一個計算錯誤,是一個不正確或一個未定義的數(shù)學(xué)操作所得到的結(jié)果。比如console.log('老師' - 2)得到的結(jié)果就是NAN。NAN是粘性的,任何對NAN的操作都會返回NAN,如console.log(NAN + 2)。
但注意:NAN不等于NAN!
字符串類型
通過單引號( '') 、雙引號( "")或反引號(``)包裹的數(shù)據(jù)都叫字符串,單引號和雙引號沒有本質(zhì)上的區(qū)別,推薦使用單引號。
注意事項(xiàng):
- 無論單引號或是雙引號必須成對使用
- 單引號/雙引號可以互相嵌套,但是不能自已嵌套自已
- 必要時可以使用轉(zhuǎn)義符
\,輸出單引號或雙引號
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 數(shù)據(jù)類型</title>
</head>
<body>
<script>
let user_name = '小明' // 使用單引號
let gender = "男" // 使用雙引號
let str = '123' // 看上去是數(shù)字,但是用引號包裹了就成了字符串了
let str1 = '' // 這種情況叫空字符串
document.write(typeof user_name) // 結(jié)果為 string
document.write(typeof gender) // 結(jié)果為 string
document.write(typeof str) // 結(jié)果為 string
document.write('str') //結(jié)果為str
//document.write('你好呀'小明'') 這是報錯的
document.write('你好呀"小明"'')
document.write('你好呀\'小明\'')
</script>
</body>
</html>字符串之間可以通過'+'拼接
document.write('你' + '好')
let age = 19
document.write('我今年' + age)
//也可以直接:
document.write('我今年' + 19)
//這里字符串和數(shù)字相‘+',默認(rèn)為字符串拼接模板字符串
使用場景:拼接字符串和變量
語法:
- 使用反引號``
- 內(nèi)容拼接時,用${}包住變量
document.write('我今年' + age + '歲了')
//也可以這么寫
document.write(`我今年${age}歲了`)布爾類型
表示肯定或否定時在計算機(jī)中對應(yīng)的是布爾類型數(shù)據(jù),它有兩個固定的值 true 和 false,表示肯定的數(shù)據(jù)用 true,表示否定的數(shù)據(jù)用 false。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 數(shù)據(jù)類型</title>
</head>
<body>
<script>
// pink老師帥不帥?回答 是 或 否
let isCool = true // 是的,摔死了!
isCool = false // 不,套馬桿的漢子!
?
document.write(typeof isCool) // 結(jié)果為 boolean
</script>
</body>
</html>undefined
未定義是比較特殊的類型,只有一個值 undefined,只聲明變量,不賦值的情況下,變量的默認(rèn)值為 undefined,一般很少【直接】為某個變量賦值為 undefined。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 數(shù)據(jù)類型</title>
</head>
<body>
<script>
// 只聲明了變量,并末賦值
let tmp;
document.write(typeof tmp) // 結(jié)果為 undefined
</script>
</body>
</html>注:JavaScript 中變量的值決定了變量的數(shù)據(jù)類型。
在工作開發(fā)中,我們常聲明一個變量,等待傳送過來的數(shù)據(jù)。如果我們不知道這個數(shù)據(jù)是否傳遞過來,此時我們可以通過檢測這個變量是不是undefined來判斷用戶是否有數(shù)據(jù)傳遞過來。
null空類型
JavaScript中的null僅僅代表一個“無”、“空”或“值未知”的特殊值。
let obj = null console.log(obj) //結(jié)果為null
null和undefined的區(qū)別:
- undefined表示沒有賦值
- null表示賦值了,但內(nèi)容為空
console.log(undefined + 1) //返回 NAN console.log(null + 1) //返回 1
在開發(fā)中,我們把null作為尚未創(chuàng)建的對象,也就是說如果有個變量里面存放的是一個對象,但是對象還沒創(chuàng)建好,可以先給個null。
類型轉(zhuǎn)換
理解弱類型語言的特征,掌握顯式類型轉(zhuǎn)換的方法
在 JavaScript 中數(shù)據(jù)被分成了不同的類型,如數(shù)值、字符串、布爾值、undefined,在實(shí)際編程的過程中,不同數(shù)據(jù)類型之間存在著轉(zhuǎn)換的關(guān)系。
隱式轉(zhuǎn)換
某些運(yùn)算符被執(zhí)行時,系統(tǒng)內(nèi)部自動將數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,這種轉(zhuǎn)換稱為隱式轉(zhuǎn)換。
規(guī)則:
- +號兩邊只要有一個是字符串,就會把另外一個轉(zhuǎn)成字符串
- 除了+號之外的算術(shù)運(yùn)算符(如- * /等)都會把數(shù)據(jù)轉(zhuǎn)成數(shù)字類型
- +號作為正號解析可以轉(zhuǎn)換成數(shù)字型
- 任何數(shù)據(jù)和字符串相加結(jié)果都是字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 隱式轉(zhuǎn)換</title>
</head>
<body>
<script>
let num = 13 // 數(shù)值
let num2 = '2' // 字符串
?
// 結(jié)果為 132
// 原因是將數(shù)值 num 轉(zhuǎn)換成了字符串,相當(dāng)于 '13'
// 然后 + 將兩個字符串拼接到了一起
console.log(num + num2)
?
// 結(jié)果為 11
// 原因是將字符串 num2 轉(zhuǎn)換成了數(shù)值,相當(dāng)于 2
// 然后數(shù)值 13 減去 數(shù)值 2
console.log(num - num2)
console.log(+12) //結(jié)果為12
console.log(+'123') //結(jié)果為123(數(shù)字型)
</script>
</body>
</html>注:數(shù)據(jù)類型的隱式轉(zhuǎn)換是 JavaScript 的特征,后續(xù)學(xué)習(xí)中還會遇到,目前先需要理解什么是隱式轉(zhuǎn)換。
補(bǔ)充介紹模板字符串的拼接的使用
顯式轉(zhuǎn)換
編寫程序時過度依靠系統(tǒng)內(nèi)部的隱式轉(zhuǎn)換是不嚴(yán)禁的,因?yàn)殡[式轉(zhuǎn)換規(guī)律并不清晰,大多是靠經(jīng)驗(yàn)總結(jié)的規(guī)律。為了避免因隱式轉(zhuǎn)換帶來的問題,通常根邏輯需要對數(shù)據(jù)進(jìn)行顯示轉(zhuǎn)換。
Number
通過 Number 顯示轉(zhuǎn)換成數(shù)值類型,當(dāng)轉(zhuǎn)換失敗時結(jié)果為 NaN(Not a Number)即不是一個數(shù)字。
注意:NAN也是number數(shù)字型,代表非數(shù)字
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基礎(chǔ) - 隱式轉(zhuǎn)換</title>
</head>
<body>
<script>
let t = '12'
let f = 8
?
// 顯式將字符串 12 轉(zhuǎn)換成數(shù)值 12
t = Number(t)
?
// 檢測轉(zhuǎn)換后的類型
// console.log(typeof t);
console.log(t + f) // 結(jié)果為 20
?
// 并不是所有的值都可以被轉(zhuǎn)成數(shù)值類型
let str = 'hello'
// 將 hello 轉(zhuǎn)成數(shù)值是不現(xiàn)實(shí)的,當(dāng)無法轉(zhuǎn)換成
// 數(shù)值時,得到的結(jié)果為 NaN (Not a Number)
console.log(Number(str))
</script>
</body>
</html>parseInt
只保留開頭的整數(shù)部分
console.log(parseInt('12px')) // 12
console.log(parseInt('12.34px')) // 12
console.log(parseInt('abc12.34px') // NANparseFloat
可以保留小數(shù)部分
console.log(parseFloat('12px')) // 12
console.log(parseFloat('12.34px')) // 12.34
console.log(parseFloat('abc12.34px')) // NAN到此這篇關(guān)于JavaScript學(xué)習(xí)第二天:常量與數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)js常量與數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
BootStrap智能表單實(shí)戰(zhàn)系列(四)表單布局介紹
這篇文章主要介紹了BootStrap智能表單實(shí)戰(zhàn)系列(四)表單布局介紹,表單布局分為自動布局和自定義布局兩種,本文通過代碼給大家介紹,介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
uniapp?js修改數(shù)組某個下標(biāo)以外的所有值完整代碼
在UniApp開發(fā)中,經(jīng)常需要對數(shù)組進(jìn)行操作,若要修改數(shù)組中特定下標(biāo)外的所有元素,可通過map方法或for循環(huán)實(shí)現(xiàn),map方法適用于生成新數(shù)組,for循環(huán)則直接修改原數(shù)組,根據(jù)項(xiàng)目需求選擇最佳方案,需要的朋友可以參考下2024-09-09
設(shè)置iframe的document.designMode后僅Firefox中其body.innerHTML為br
設(shè)置iframe的document.designMode為On可以讓其可編輯,一般用在富文本編輯器組件中。這里僅列出各瀏覽器差異2012-02-02
js中document.getElementById(id)的具體用法
本文主要介紹了js中document.getElementById(id)的具體用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
JS使用canvas中的measureText方法測量字體寬度示例
這篇文章主要介紹了JS使用canvas中的measureText方法測量字體寬度,結(jié)合實(shí)例形式分析了canvas的measureText方法相關(guān)使用技巧,需要的朋友可以參考下2019-02-02
ionic開發(fā)中點(diǎn)擊input時鍵盤自動彈出
ionic開發(fā)移動端界面時,在輸入用戶名和密碼的時候,輸入法不要擋住我的輸入框,并且輸入框往上滾動的時候,頂部標(biāo)題不要上移,下面給大家分享實(shí)現(xiàn)代碼,一起看看吧2016-12-12

