基本數據類型: number 數字; boolean 布爾值 :有兩個值 true、false ;string 字符串 ?
? ?null 空對象; undefined 未定義的值(很多瀏覽器的初始值是undefined)
? Symbol() 產生一個唯一的值,和誰都不重復
null和undefined的區別:
null 是一個表示"無"的對象,轉為數值時為 0
undefined 是一個表示"無"的原始值,轉為數值時為 NaN
當聲明的變量還未被初始化時,變量的默認值為 undefined
null 用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的對象
undefined 表示 “缺少值”,就是此處應該有一個值,但是還沒有定義。
典型用法是:
1. 變量被聲明了,但沒有賦值時,就等于 undefined
2. 調用函數時,應該提供的參數沒有提供,該參數等于 undefined
3. 對象沒有賦值的屬性,該屬性的值為 undefined
4. 函數沒有返回值時,默認返回 undefined
null 表示“沒有對象”,即該處不應該有值。
典型用法是:
1. 作為函數的參數,表示該函數的參數不是對象
2. 作為對象原型鏈的終點
引用數據類型:
對象
.普通對象
.數組對象
.正則對象(匹配字符串的規則)
.日期對象
.函數對象
...
對象的存儲過程:
1. 開辟一個空間地址
2. 把鍵值對存儲到這個空間地址的堆內存中
3. 把這個對象指針賦值給變量名
```
let obj = {
a:1,
fn:(function (val) {
// 賦給fn的是自執行函數的執行結果 也就是一個undefined
// 該自執行函數只會執行一次
console.log(val);
})(obj.a)
};
let obj2 = obj;// 兩者代表了同一個地址;
// 獲取屬性的值 obj.fn 或者 obj['fn']
// 新增屬性: obj.c = 100 或者 obj['c'] = 100
// 真刪除 delete obj.a (在嚴格模式下不支持該方法); 假刪除: obj.a = null;
```
// 引用類型小習題
```
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
```
//=========================
```
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);
```
基本數據類型與引用數據類型的區別:
基本數據類型是操作值,引用數據類型操作的是堆內存空間地址
布爾值轉換:0 NaN '' null undefined 轉化成布爾值是false,其余的都是true
檢驗有效數字的方法:isNaN
常用的數據類型檢測方式: typeof constructor instanceof Object.prototype.toString.call()
比較運算符:
==?相對比較:會進行默認的類型轉化; 若轉換之后的值相等,則結果就是true
===?絕對比較,值不但要相同、類型也得相同。
引用數據類型之間的比較,就看是不是同一個地址;
邏輯運算符:
||? ? ?表示或者,前邊成立給前邊,前邊不成立給后邊
&& 表示并且前邊成立給后邊,前邊不成立給前邊
- 介紹
- 原生JS
- 1.ES6的新特性
- 2.JS的數據類型
- 3.定義函數的方法
- 4.JS作用域的理解
- 5.閉包的理解
- 6.數組去重
- 7.原型及原型鏈
- 8.Object.create的作用
- 9.new的執行過程是怎么回事
- 10.call,apply,bind三者的區別
- 11.實現類的繼承
- 12.談談你對this指向的理解
- 13.DOM
- 14.JS的異步編程
- 15.正則
- http&ajax
- 1.TCP/IP的三次握手和四次揮手
- 2.http常用狀態碼(http-status-code):
- 3.從瀏覽器輸入URL按回車到頁面顯示都發生了什么?
- 4.HTTPS和HTTP的區別
- 5.瀏覽器緩存?
- 6.ajax四步
- 7.一般我們再攔截器中都會寫什么代碼?
- 8.get請求和post請求有什么區別?什么時候使用post?
- 9.Cookie 和 Session 的區別?
- 10.Token 相關
- 11.什么是同源策略?