1.null和undefined的區別?
答:undefined型別只有乙個值,即undefined。當宣告的變數還未被初始化時,變數的預設值為undefined。null型別也只有乙個值,即null。null用來表示尚未存在的物件,常用來表示函式企圖返回乙個不存在的物件。
2.什麼是單例模式,單例模式在前端開發中有什麼應用?
class
singleton
// 構造乙個廣為人知的介面,供使用者對該類進行例項化
static
getinstance
(name)
return
this
.instance;
}
3.js分為哪兩大型別?都有各自的什麼特點?
答:js分為原始型別和物件型別,原始型別又稱基本資料型別,分別有6種:null,string,symbol,undefined,number,boolean,除了這這些基本資料型別剩下的都是物件型別,比如陣列、物件之類,判斷乙個變數是什麼型別的方法是,首先使用typeof方法,如果是資料基本型別會返回基本資料型別的名稱,如果返回的是object,則需要使用instanceof,instanceof會返回物件的建構函式。如果是陣列型別會返回它的建構函式array,通過這個可以判斷物件的型別,但是instanceof並不能準確的判斷物件的型別,具有一定得侷限性。
4.原生js常用的方法有哪些?
(1)typeof,是判斷元素具體是什麼型別的方法,一般會返回資料型別,但是需要注意的是typeof null返回的結果是object,這是乙個js的bug,typeof [1,2]返回的結果是object,因為在資料型別中並沒有array這一項,typeof symbol()返回的結果是symbol,這是es6新特性。
(2) instanceof,它用於例項和建構函式的對應,返回的是乙個布林型別資料。比如想要判斷乙個變數是不是乙個陣列,用typeof方法已經不合適了,但是可以用[1,2] instanceof array來判斷。因為,[1,2]是陣列,它的建構函式是array。同理:
function foo
(name)
var foo =
newfoo
('bar'
)//這裡foo的是foo的例項,所以執行下面的方法會返回true
console.
log(foo instanceof
foo)
5.關於值型別和引用型別,請說出他們的區別?
答:上面提到的資料型別都是值型別,只有object和function是引用型別,其他的都是值型別。在引數傳遞方式上,值型別是按值傳遞,引用型別是按照共享傳遞。下面通過例子更及時透徹的說明一下:
// 值型別
var a =
10var b = a
b =20
console.
log(a)
// 10
console.
log(b)
// 20
上述**中,a和b都是值型別,兩者分別修改賦值,相互之間沒有影響。下面是引用型別的例子:
// 引用型別
var a =
var b = a
b.x =
100b.y =
200console.
log(a)
// console.
log(b)
//
function foo
(a)function bar
(b)var a =1;
var b =
;foo
(a);
bar(b)
;console.
log(a)
;// 1
console.
log(b)
;// value: new
6.new 的原理是什麼?通過 new 的方式建立物件和通過字面量建立有什麼區別?
在呼叫new的過程中會發生一下四件事情:
1.新生成乙個物件
2.鏈結到原型
3.繫結this
4.返回新物件
對於物件來說,其實都是通過new產生的,無論是function foo()還是let a=,對於建立乙個物件來說,更推薦使用字面量的方式建立物件(無論是考慮效能還是可讀性)。因為你使用new object()的方式建立物件需要通過作用域立鏈一層一層的找到object,但是你使用字面量方式就沒這個問題。
function foo()
// function 就是個語法糖
// 內部等同於 new function()
let a =
// 這個字面量內部也是使用了 new object()
前端學習總結
1 對前端的印象在於html 設定格式,css 設定樣式,js 互動事件,經過4個星期左右的開發能大致搭乙個前後端互動的框架,利用到的技術包括 前端 layui框架,後端 springboot,mongodb.2 經過這幾周的學習收穫頗多,尤其是如何去解決乙個新問題,乙個基本不熟悉的領域,我相信這是...
學習前端總結
什麼是表示式?在頁面中能夠得到結果,那麼就代表是表示式。如下圖 在控制台輸入1 1 回車得到true,true就是乙個結果,所以1 1 就是乙個表示式 只輸入乙個數字2,回車也能得到乙個值2,所以2也是乙個表示式 輸入乙個不帶引號的字元,則沒有結果,直接報錯,所以就不是表示式 帶引號 123 則代表...
新手前端問題總結
本人是乙個前端新手,只知道var和function並且不知道fuction怎麼用,最近一段時間在寫前端,所以有些小總結,特別初級,不喜勿噴,這只是我最近接觸js和vue的一些小總結。1.router link的使用 使用router link有兩種傳值方式 1 在utils中直接用?傳值就可,使用獲...