1 變量
1.1 什麼是變量
什麼是變量:變量是計算機內存中存儲數據的標識符,根據變量名稱可以獲取到內存中存儲的數據。
爲什麼要使用變量:使用變量可以方便的獲取或者修改內存中的數據。
1.2 如何使用變量
var聲明變量
var age;
變量的賦值
var age;
age = 18;
同時聲明多個變量
var age, name, sex;
age = 10;
name = 'zs';
同時聲明多個變量並賦值
var age = 10, name = 'zs';
1.3 變量在內存中的存儲
var age = 18;
1.4 變量的命名規則和規範
規則:必須遵守的,不遵守會報錯
由字母、數字、下劃線、$符號組成,不能以數字開頭
不能是關鍵字和保留字,例如:for、while。
區分大小寫
規範:建議遵守的,不遵守不會報錯
變量名必須有意義
遵守駝峯命名法。首字母小寫,後面單詞的首字母需要大寫。例如:userName、userPassword
1.5 案例
1. 交換兩個變量的值
2. 不使用臨時變量,交換兩個數值變量的值
2 數據類型
2.1 簡單數據類型
Number、String、Boolean、Undefined、Null
2.1.1 Number類型
數值字面量:數值的固定值的表示法
110 1024 60.5
進制
十進制
var num = 9;
進行算數計算時,八進制和十六進制表示的數值最終都將被轉換成十進制數值。
十六進制
var num = 0xA;
數字序列範圍:0~9以及A~F
八進制
var num1 = 07; // 對應十進制的7
var num2 = 019; // 對應十進制的19
var num3 = 08; // 對應十進制的8
數字序列範圍:0~7
如果字面值中的數值超出了範圍,那麼前導零將被忽略,後面的數值將被當作十進制數值解析
浮點數
浮點數的精度問題
浮點數
var n = 5e-324; // 科學計數法 5乘以10的-324次方
浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數
var result = 0.1 + 0.2; // 結果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100);
不要判斷兩個浮點數是否相等
- 數值範圍
最小值:Number.MIN_VALUE,這個值爲: 5e-324
最大值:Number.MAX_VALUE,這個值爲: 1.7976931348623157e+308
無窮大:Infinity
無窮小:-Infinity
數值判斷
NaN:not a number
NaN 與任何值都不相等,包括他本身
isNaN: is not a number
2.1.2 String類型
'abc' "abc"
字符串字面量
'程序猿','程序媛'
思考:如何打印以下字符串。
我是一個"正直"的人
我很喜歡"厲害'程序猿'"
轉義符
字符串長度
length屬性用來獲取字符串的長度
var str = '黑馬程序猿 Hello World';
console.log(str.length);
字符串拼接
字符串拼接使用 + 連接
console.log(11 + 11);
console.log('hello' + ' world');
console.log('100' + '100');
console.log('11' + 11);
console.log('male:' + true);
1. 兩邊只要有一個是字符串,那麼+就是字符串拼接功能
2. 兩邊如果都是數字,那麼就是算術功能。
2.1.3 Boolean類型
Boolean字面量: true和false,區分大小寫
計算機內部存儲:true爲1,false爲0
2.1.4 Undefined和Null
1. undefined表示一個聲明瞭沒有賦值的變量,變量只聲明的時候值默認是undefined
2. null表示一個空,變量的值如果想爲null,必須手動設置
2.2 複雜數據類型
2.1 複雜類型(引用類型)
Object,Array,Date,RegExp,Function
基本包裝類型:Boolean,Number,String
單體內置對象:Global,Math
2.2 類型檢測
方式1: `typeof`
方式2: `instanceof`
方式3: `Object.prototype.toString.call()`
2.3 值類型和引用類型在內存中的存儲方式
值類型按值存儲;引用類型按引用存儲。
2.4 值類型複製和引用類型複製
值類型按值複製;引用類型按引用複製。
2.5 值類型和引用類型參數傳遞
值類型按值傳遞;引用類型按引用傳遞。
2.6 值類型與引用類型的差別
1基本類型在內存中佔據固定大小的空間,因此被保存在棧內存中
2從一個變量向另一個變量複製基本類型的值,複製的是值的副本
3引用類型的值是對象,保存在堆內存
4包含引用類型值的變量實際上包含的並不是對象本身,而是一個指向該對象的指針
5從一個變量向另一個變量複製引用類型的值的時候,複製是引用指針,因此兩個變量最終都指向同一個對象
2.3 獲取變量的類型
typeof
var age = 18;
console.log(typeof age); // 'number'
2.4 字面量
在源代碼中一個固定值的表示法。
數值字面量:8, 9, 10
字符串字面量:'黑馬程序員', "大前端"
布爾字面量:true,false
3 註釋
3.1 單行註釋
用來描述下面一個或多行代碼的作用
// 這是一個變量
var name = 'hm';
3.2 多行註釋
用來註釋多條代碼
var age = 18;
var name = 'zs';
console.log(name, age);
3.3 數據類型轉換
如何使用谷歌瀏覽器,快速的查看數據類型?
字符串的顏色是黑色的,數值類型是藍色的,布爾類型也是藍色的,undefined和null是灰色的
3.4 轉換成字符串類型
toString()
var num = 5;
console.log(num.toString());
String()
String()函數存在的意義:有些值沒有toString(),這個時候可以使用String()。比如:undefined和null
拼接字符串方式
num + "",當 + 兩邊一個操作符是字符串類型,一個操作符是其它類型的時候,會先把其它類型轉換成字符串再進行字符串拼接,返回字符串
3.5 轉換成數值類型
Number()
Number()可以把任意值轉換成數值,如果要轉換的字符串中有一個不是數值的字符,返回NaN
parseInt()
var num1 = parseInt("12.3abc"); // 返回12,如果第一個字符是數字會解析直到遇到非數字結束
var num2 = parseInt("abc123"); // 返回NaN,如果第一個字符不是數字或者符號就返回NaN
parseFloat()
parseFloat()把字符串轉換成浮點數
parseFloat()和parseInt非常相似,不同之處在與
parseFloat會解析第一個. 遇到第二個.或者非數字結束
如果解析的內容裏只有整數,解析成整數
- +,-0等運算
var str = '500';
console.log(+str); // 取正
console.log(-str); // 取負
console.log(str - 0);
3.6 轉換成布爾類型
Boolean()
0 ''(空字符串) null undefined NaN 會轉換成false 其它都會轉換成true