一、字面量、變量、常量
- 字面量:字面量就是一個值,比如變量的值或者常量的值
- 變 量:定義完成後,可以修改的數據,var關鍵字 定義
- 常 量:定義完成後,固定且不能改變的數據,const關鍵字 定義
總結:
常量與變量的區別:
① 常量與變量的存儲方式是一樣的,只不過常量必須要有初始值,而且值不允許被修改,而變量可以無初始值,且可以多次賦值。
常量與字面量的區別:
① 常量與字面量均不會被改變,常量爲存儲數據的容器,而字面量爲等號右側的值,字面量是由字符串,數字等構成的字符串或數值。
二、數據類型
- 程序在運行過程中會產生各種各樣的臨時數據, 爲了方便數據的運算和操作, JavaScript對這些數據進行了分類, 提供了豐富的數據類型;
數據類型劃分:
① 簡單數據類型:Number、String、Boolean、Undefined、Null
② 引用(複雜)數據類型:Object
數據類型查看:typeof 操作符,會將檢查的結果以字符串的形式返回給我們
- 簡單數據類型
Number:
① 在JS中所有的數值都是Number類型(整數和小數)
var num1= 123;
var num2= 3.14;
console.log(typeof num1);
console.log(typeof num2);
② 由於內存的限制,ECMAScript 並不能保存世界上所有的數值
// 最大值:Number.MAX_VALUE
console.log(Number.MAX_VALUE);
// 最小值:Number.MIN_VALUE
console.log(Number.MIN_VALUE);
// 無窮大:Infinity, 如果超過了最大值就會返回該值
console.log(Number.MAX_VALUE + Number.MAX_VALUE);
// 無窮小:-Infinity, 如果超過了最小值就會返回該值
console.log(typeof Infinity);
console.log(typeof -Infinity);
③ NaN 非法數字(Not A Number)
JS中當對數值進行計算時沒有結果返回,則返回NaN
var num = NaN;
console.log(num);
console.log(typeof num);
注意:JS中整數的運算可以保證精確的結果
在JS中浮點數的運算可能得到一個不精確的結果
String:
① 字符串由單引號或雙引號括起
② 使用字符串注意事項
- 不能一單一雙,必須成對出現
- 相同引號不能嵌套,不同引號可以嵌套
- 給變量加上引號, 那麼變量將變爲一個常量
Boolean:
布爾型也被稱爲邏輯值類型或者真假值類型, 只能夠取真(true)和假(false)兩種數值
- 任何非零數值都是true, 包括正負無窮大, 只有0和NaN是false
- 任何非空字符串都是true, 只有空字符串是false
- 任何對象都是true, 只有null和undefined是false
var bool1 = Boolean(0);
console.log(bool1 );
var bool2 = Boolean(1);
console.log(bool2 );
var bool3 = Boolean(-1);
console.log(bool3 );
var bool4 = Boolean("hello");
console.log(bool4);
var bool5 = Boolean("");
console.log(bool5 );
var bool6 = Boolean(undefined);
console.log(bool6 );
var bool7 = Boolean(null);
console.log(bool7);
Null和Undefined:
① Undefined是一種比較特殊的類型,表示變量未賦值,這種類型只有一種值就是undefined
undefined是Undefined類型的字面量,undefined和168、 "itlike"一樣是一個字面量,Undefined和Number、String一樣是一個數據類型,typeof對沒有初始化和沒有聲明的變量都會返回undefined
② Null 類型也是隻有一個值的數據類型,這個特殊的值是 null
從語義上看null表示的是一個空的對象,所以使用typeof檢查null會返回一個Object
undefined值實際上是由null值衍生出來的,所以如果比較undefined和null是否相等,會返回true
三、數據類型轉化
轉換成字符串類型
終極大法:拼接字符串方式
任何數據和 + " " 連接到一起都會轉換爲字符串將其它類型轉換爲Number類型
① 字符串轉數字:
- 如果字符串爲空或者是一個全是空格的字符串,則轉換爲0
var s2 = "";
var r2 = Number(s2);
console.log(r2);
var s3 = " ";
var r3 = Number(s3);
console.log(r3);
- 如果字符串中有非數字的內容,則轉換爲NaN
② 布爾轉數字
- true 轉成 1,false 轉成 0
③ null和undefined轉數字
- null轉數字爲0
var s1 = null;
var r1 = Number(s1);
console.log(r1);
- undefined轉數字爲NaN
var s2 = undefined;
var r2= Number(s2);
console.log(r2);
- parseInt()函數/parseFloat()函數
① 使用意義
Number()函數中無論字符串中是否存在有效整數都會直接返回NaN,
利用parseInt()和parseFloat()可以提取字符串中的有效整數和浮點數
② parseInt()
- 有兩個參數,第一個參數是要轉換的字符串,第二個參數是要轉換的進制
- 從第一位有效數字開始,直到遇到無效數字
- 如果第一位不是有效數字,則直接返回NaN
var s1 = "10rem";
var r1 = parseInt(s1);
console.log(r1);
var s2 = "200X300";
var r2 = parseInt(s2);
console.log(r2);
var s3 = "itLike001";
var r3 = parseInt(s3);
console.log(r3);
var s4 = "";
var r4 = parseInt(s4);
console.log(r4);
③ parseFloat()
- 不支持第二個參數,只能解析十進制數
- 如果解析的內容裏只有整數,則只解析成整數
- 如果第一位不是有效數字,則直接返回NaN
- 從第一位有效數字開始,直到遇到無效數字
④ 使用注意
- 對非String使用parseInt()或parseFloat(), 會先將其轉換爲String類型然後在操作
var s7 = false;
var r7 = parseInt(s7);
console.log(r7);
- +和-0運算符
- 添加+號, 不會修改數據的正負性
var s1 = "12306";
var r1 = +s1;
console.log(r1);
console.log(typeof r1);
var s2 = "1.01";
var r2 = +s2;
console.log(r2);
console.log(typeof r2);
var s3 = "20rem";
var r3 = +s3;
console.log(r3);
console.log(typeof r3);
var s4 = true;
var r4 = +s4;
console.log(r4);
console.log(typeof r4);
var s5 = false;
var r5 = +s5;
console.log(r5);
console.log(typeof r5);
- 轉成布爾類型
- Boolean() , 0 ''(空字符串) null undefined NaN 會轉換成false 其它都會轉換成true
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
console.log(Boolean(-1));
var str = 'itLike';
var num1 = 123;
var num2 = -1;
console.log(Boolean(str));
console.log(Boolean(num1));
console.log(Boolean(num2));