關于面試:
*基層工程師 --基礎知識
*高級工程師 --項目經(jīng)驗
*架構師 --解決方案
扎實的基礎會讓你高效學習新技術锦积!
1.拿到一個面試題芒帕,你第一時間看到的是什么?
考點
2.如何看待網(wǎng)上搜出來的永遠也看不完的題海丰介?
學好基礎以不變應萬變
3.如何看待遇到的面試題
題目—知識—題目
題目:
題目考察的知識點為例:
1.js中使用typeof能得到哪些類型
考點:js變量類型
string背蟆、number、boolean哮幢、object带膀、function、undefined
引用類型只能區(qū)分function
2.何時使用===何時使用==
“===”完成沒有類型轉(zhuǎn)換
“==”類型轉(zhuǎn)換
if(obj.a == null){
//這里相當于obj.a===null || obj.a ===undefined 簡寫形式
//這是jquery源碼中推薦的寫法
}
除此之外家浇,全部用===
3.js中有哪些內(nèi)置函數(shù)--數(shù)據(jù)封裝類對象
--內(nèi)置函數(shù)有什么作用:原型本砰、原型鏈特別強調(diào)內(nèi)置函數(shù)的作用;
--不考慮運行環(huán)境钢悲,js當做一個單純的語言來講点额,內(nèi)置了一些東西。
--內(nèi)置對象:Math JSON
Object
Array
Boolean
Number
String
Fouction
Date
RegExp
Error
4.js變量按照存儲方式區(qū)分為哪些類型莺琳,并描述其特點
一还棱、變量類型:
1.值類型---把數(shù)分塊存在內(nèi)存中
2.引用類型--好幾個變量共用一個內(nèi)存塊,節(jié)省內(nèi)存空間惭等。
二珍手、特點區(qū)別:
*1.值類型的值賦值之后不會相互干涉
*2.引用類型賦值是一個變量指針的賦值,并不是真正的值的copy辞做,
它們的值的修改會相互干預的琳要。
//值類型
var a =10;
var b= a;
a =11;
console.log(b);//10
//引用類型
var obj1 = {x:100};
var obj2 = obj1;
obj1.x = 200;
console.log(obj2.x);//200
5.如何理解JSON
1.json只不過是一個js內(nèi)置對象(和Math一樣)
2.json也是一種數(shù)據(jù)格式。
JSON的API:
json.stringify({a:10,b:20}); //把對象變成字符串
json.parse('{"a":10,"b":20}'); //把字符串變成對象
知識點:
1.變量類型
--值類型 vs 引用類型
值類型:
eg:
var a = 100;
var b = a;
a=200; //a的修改不會影響b
console.log(b);//100
每一個變量都能存儲個字的值不會相互影響秤茅。
從內(nèi)存中來說**值類型**是把每一個值都存儲到變量內(nèi)存的位置稚补;
引用類型:b的修改影響了a
eg:
var a = {age:20};
var b=a;
b.age = 21;
console.log(a.age); //21
把a賦值成一個對象提陶,存在另一個地方奶躯,a內(nèi)存的位置是通過指針指向這個對象的地方,把b賦值成a的時候九杂,定義了一個b剪决,b的指針又指向這個對象的位置疯搅,a和b同時指向這個對象的位置蔫耽,a和b同時指向這個對象解幼,當b.age賦值21的時候,a也指向這個對象润绎,所以a的值變了撬碟;
引用類型的變量是一個真實的對象的一個指針而已,并不是每次賦值把這個對象真正的值copy一份存儲一份凡橱。
引用類型:對象小作,數(shù)組亭姥,函數(shù)
可以無限制擴展屬性(為了讓內(nèi)存可以共用空間稼钩,才會出現(xiàn)引用這種方式)
--typeof運算符詳解
typeof只能區(qū)分值類型的強制類型,引用類型區(qū)分不出來(除了function)
值類型:
typeof undefined //undefined
typeof 'abc' //string
typeof 123 //number
type of true //boolean
引用類型:
typeof {} //object
typeof [] //object
typeof null //object
--什么都沒有只是一個空的指針而已达罗,定義了一個位置坝撑,但是并沒有指向任何一個引用類型的一個真實的對象
typeof console.log //function
2.變量計算--強制類型轉(zhuǎn)換(值類型的類型轉(zhuǎn)換計算)
1.字符串拼接
var a = 100 +10; //110
var b = 100 +'10'; // '10010'
----字符串拼接的時候發(fā)生了類型轉(zhuǎn)換;
2.==運算符
100 == '100'; // true
0 == ' '; //true
--慎用==粮揉,特別針對第一二種情況巡李,他會進行類型轉(zhuǎn)換,試圖讓前后的數(shù)相同扶认。
null == undefined; //true
--0 和 ' '和null和undefined 都會轉(zhuǎn)換成false侨拦。
這些地方的==全部換成===就不會出現(xiàn)這種情況。
3.if語句
4.邏輯運算符(或與非)
console.log(10&&0); //0 把10轉(zhuǎn)換成true了辐宾;
console.log(' ' || 'abc'); //' ' 轉(zhuǎn)換成false
console.log(!window.abc); // true
!undefiend---->true
//判斷一個變量會被當做true還是false
var a =100;
console.log(!!a); //true
!a ---->false
!!a ---->true