javascript
JavaScript部分问题
JavaScript中的相等判斷
話題: JavaScript 難度: ?
JavaScript中的相等判斷有嚴格判斷和帶隱式轉換的判斷兩種:
- 嚴格判斷(strict comparision): 比如===,比較的時候不會隱式轉換類型;
- 抽象判斷(abstract comparasion):比如==,比較的時候會隱式轉換類型。
一些簡單的規則:
- 如果兩邊都是布爾類型的值,使用===;
- 如果兩邊是0,"",[],使用===;
- 所有其它類型,使用==是安全的。而且在很多情況下會簡化代碼、增加可讀性。
請解釋Null和Undefined
話題: JavaScript 難度: ??
JavaScript和TypeScript有兩個最基本的類型null和undefined。它們的含義是不同的:
- 如果還沒有被初始化,則是undefined;
- 如果不可用,則可以用null來表示;
請解釋JavaScript中的值和類型
話題: JavaScript 難度: ??
下面是JavaScript內置的可用類型:
- string
- number
- boolean
- null和undefined
- object
- symbol (ES6的新語法)
如果比較JavaScript中的兩個對象?
話題: JavaScript 難度: ??
兩個非基本類型的值,比如對象(包括函數和數組)都是通過引用的形式來訪問。如果直接通過==和===來判斷,那么只會簡單的判斷其引用地址是否相同,而不是它們實際對應的值。
如果數組和字符串做比較,那么數組會通過逗號拼接轉換為字符串。通過等號判斷的時候,兩個相同的數組不會相等,但是和相同數據的字符串比較反而相等。
var a = [1,2,3]; var b = [1,2,3]; var c = "1,2,3";a == c; // true b == c; // true a == b; // false 復制代碼如果要深度比較,可以使用第三方庫,比如deep-equal或則你自己實現一個比較算法。
請解釋undefined和not defined的區別
話題: JavaScript 難度: ???
在JavaScript中,如果你嘗試使用不存在的還未申明的變量,JavaScript會拋出錯誤var name is not defined。但是如果你用typeof來查看其類型,會返回undefined。
我們先來澄清一下聲明和定義的區別:var x是一個聲明,因為你并沒有定義其具體的值,你只是聲明其存在性。
var x; // declaring x console.log(x); //output: undefined 復制代碼var x = 1同時兼具聲明和定義,我們也可以叫它初始化。在JavaScript中,每一個變量和函數聲明都會被提升到頂部。
如果我們訪問一個聲明了但是未定義的變量,會返回undefined。
var x; // Declaration if(typeof x === 'undefined') // Will return true 復制代碼訪問一個未聲明未定義的變量,會返回not defined錯誤。
console.log(y); // Output: ReferenceError: y is not defined參考自https://juejin.im/post/5bd95d22e51d45685f442f73
總結
以上是生活随笔為你收集整理的JavaScript部分问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++混淆点-逗号运算符
- 下一篇: $ajax({}).done 和 $aj