2017.8.20:慕課網(wǎng)JavaScript面試題

1.知識點
1.png
2.列如
2.png
3.變量類型和計算
1.變量類型
(1).值類型(null、undefined勾怒、boolean谒拴、number串结、string)
var a=100; 
var b=a;
 a=200;
console.log(b); //100
(2).引用類型(對象蒿柳、數(shù)組、函數(shù))
var a={age:20}岳枷;
var b=a;
b.age=21;
console.log(b); // 21
(3).typeof運算符詳解
typeof undefined //undefined
typeof 'abc' // string
typeof 123 //number
typeof true // boolean
typeof {} // object
typeof [] // object
typeof null // object
typeof console.log // function
2.變量計算-強制類型轉(zhuǎn)換
(1).字符串拼接
var a=100+10; // 110
var b=100+'10'; // '10010'
(2).==運算符
100 == '100'  // true
0 == ''  // true
null == undefined // true
(3).if語句
1.var a=true;
if(a){
   //....
}
2.var b=100;
if(b){
    //...
}
3.var c= '';
if(c){
    //..
}
(4).邏輯運算
console.log(10 && 0); // 0
console.log('' || 'abc'); // 'abc'
console.log(!window.abc); // true
3.何時使用===和==
if(obj.a == null){
      //這里相當(dāng)于obj.a === null || obj.a===undefined,簡寫形式
      //這是jQuery源碼中推薦的寫法
}
4.JS中的內(nèi)置函數(shù)
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
5.如何理解JSON
JSON.stringify({a:10,b:20})
JSON.parse('{"a":10,"b":20}')
4.原型和原型鏈
3.png
4.png
1.構(gòu)造函數(shù)
function Foo(name,age){
      this.name=name;
      this.age=age;
      this.class="class-1;
      //return this //默認(rèn)有這一行
}
var f = new Foo("小林"芒填,20);//創(chuàng)建多個對象
2.構(gòu)造函數(shù)-擴展
(1).var a={}其實是var a=new Object()的語法糖空繁。
(2).var a=[]其實是var a=new Array()的語法糖殿衰。
(3).function Foo(){....}其實是var Foo=new Fuction(...)
(4).使用instanceof判斷一個函數(shù)是否是一個變量的構(gòu)造函數(shù)。
3.原型規(guī)則和示例
(1).所有的引用類型(數(shù)組盛泡、對象闷祥、函數(shù) ),都具有對象特性傲诵,即可自由擴展屬性(除了"null"之外)凯砍。
var  obj={};obj.a=100;
var arr=[];arr.a=100;
function fn(){}  fn.a=100;
(2).所有的引用類型(數(shù)組箱硕、對象、函數(shù) )果覆,都有一個__proto__屬性颅痊,屬性值是一個普通的對象。
console.log(obj.__proto__);
console.log(arr.__proto__);
console.log(fn.__proto__);
(3).所有的函數(shù)局待,都有一個prototype屬性,屬性值也是一個普通的對象菱属。
console.log(fn.prototype)
(4).所有的引用類型(數(shù)組钳榨、對象、函數(shù) ),__proto__屬性值指向它的構(gòu)造函數(shù)的"prototype"屬性值纽门。
console.log(obj.__proto__===Object.prototype);
(5).當(dāng)試圖得到一個對象的某個屬性時薛耻,如果這個對象本身沒有這個屬性,那么會去它的__proto__(即它的構(gòu)造函數(shù)的prototype)中尋找赏陵。
//構(gòu)造函數(shù)
function Foo(name, age){
    this.name=name;
}
Foo.prototype.alertName = function(){
    alert(this.name);
}
//創(chuàng)建示例
var f=new Foo('小林');
f.printName=function(){
    console.log(this.name);
}
//測試
f.printName();
f.alertName();
f.toString();//要去f.__proto__.__proto__中查找饼齿。
6.png
5.png
5.instanceof
1.f instanceof Foo的判斷邏輯是:
2.f的__proto__一層一層往上,能否對應(yīng)到Foo.prototype蝙搔。
3.再試著判斷f instanceof Object缕溉。
7.png
8.png
9.png
6.原型繼承實例
1.function Elem(id) {
            this.elem = document.getElementById(id);
          }
          Elem.prototype.html = function (val){
            var elem = this.elem;
            if(val){
                elem.innerHTML = val;
                return this; //鏈?zhǔn)讲僮?            }else {
                return elem.innerHTML;
            }
          }
          Elem.prototype.on = function (type, fn){
            var elem = this.elem;
            elem.addEventListener(type, fn);
          }
          var div1 = new Elem('box');
//        console.log(div1.html());
//         div1.html('<p>2222</p>');
//         div1.on("click", function(){
//             alert("111");
//         })
            div1.html('<p>2222</p>').on("click", function(){
               alert("this.text()");
           })
7.作用域和閉包
10.png
11.png
1.執(zhí)行上下文
(1).范圍:一段<script>或者一個函數(shù)。
(2).全局:變量定義吃型、函數(shù)聲明证鸥。一段<script>。
(3).函數(shù):變量定義勤晚、函數(shù)聲明枉层、this、argument赐写、函數(shù)
(4).函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別鸟蜡。
console.log(a);  //undefined
var a = 100;

fn('zhangsan')  // 'zhangsan'   20
function fn(name) {
      age=20;
      console.log(name,age);
      var age;
}
2.this指向
(1).this要執(zhí)行時才能確認(rèn)值,定義時無法確認(rèn)
(2).場景
1.作為構(gòu)造函數(shù)執(zhí)行
function Foo(name){
    this.name=name;
}
var f=new Foo("小林")

2.作為對象屬性執(zhí)行
var obj = {
      name:"A",
      printName: function(){
            console.log(this.name);
     }
}
obj.printName()

3.作為普通函數(shù)執(zhí)行
function fn(){
      console.log(this)//window
}
fn()

4.call挺邀、Apple揉忘、bind
function fn1(name, age){
      alert(name);
      console.log(this)//window
}
fn1.call({x:100}, "zhangsan", 20);//{x:100}this指向
fn1.call({x:100}, ["zhangsan", 20]);//{x:100}this指向
var fn2 = function(name, age){
      alert(name);
      console.log(this);
}.bind({y:200})
fn2('zhangsan', 20)


var a={
    name: "A",
    fn: function(){
          console.log(this.name);
    }
}
a.fn() // this===a
a.fn.call({name:'B'}) // this ==={name: 'B'}
var fn1 = a.fn;
fn1 // this===window
3.作用域
(1).沒有塊級作用域。
if(true){
     var name="zhangsan";
}
console.log(name);
(2).只有函數(shù)和全局作用域悠夯。
var a=100;
function fn(){
      var a=200;
      console.log('fn', a);
}
console.log('global', a);
fn();
(3).作用域鏈
var a=100;
function fn(){
    var b=200;
    console.log(a)//當(dāng)前作用域沒有定義的變量癌淮,即“自由變量”
    console.log(b)
}
4.閉包
(1).閉包的使用場景
1.函數(shù)作為返回值。
function f1(){
    var a=10;
    return function (){
         console.log(a)//自由變量沦补,父作用域?qū)ふ?   }
}
var f =f1();
var a=2000;
f();// 10

2.函數(shù)作為函數(shù)傳遞乳蓄。
function f1(){
    var a=10;
    return function (){
         console.log(a)//自由變量,父作用域?qū)ふ?   }
}
var f =f1();
function f2(fn){
    var a=200;
    fn();
}
f2(f1);
12.png
13.png
8.異步和單線程
14.png
15.png
1.何時需要異步
(1).在可能發(fā)生等待的情況夕膀。
(2).等待過程中不能像alert一樣阻塞程序運行虚倒。
(3).因此美侦,所以的'等待的情況'都需要異步。
2.異步的場景
(1).定時任務(wù):setTimeout,setInverval魂奥。
(2).網(wǎng)絡(luò)請求:ajax請求菠剩,動態(tài)<img>加載。
(3).事件綁定
3.同步和異步的區(qū)別是什么
(1).同步會阻塞代碼執(zhí)行耻煤,而異步不會具壮。
(2).alert是同步,setTimeout是異步哈蝇。
16.png
9.日期棺妓、Math、數(shù)組api炮赦、對象api
17.png

上面解答

21.png
22.png
23.png

1.日期

18.png

2.Math
(1).獲取隨機數(shù)Math.random()怜跑。
3.數(shù)組api

19.png
1.forEach
var arr=[1,2,3];
arr.forEach(function(item, index){
        //遍歷數(shù)組的所有元素
         console.log(index, item);
})
2.every
var arr=[1,2,3];
var result=arr.every(function (item, index){
      //用來判斷所有的數(shù)組元素,都滿足一個條件
      if(item < 4){
                 return ture;
        }
})
console.log(result);
3.some
var arr=[1,2,3];
var result = arr.some(function (item, index){
     //用來判斷所有的數(shù)組元素吠勘,只要有一個滿足條件即可
     if(item < 2){
             return ture
      }
})
console.log(result);
4.sort
var arr=[1,4,2,3,5];
var arr2 = arr.sort(function(a, b){
        //從小到大排序
       return a-b;
       //從大到小排序
       // return b-a
})
console.log(arr2);
5.map
var arr=[1,2,3,4];
var arr2 = arr.map(function(item, index){
       //將元素重新組裝性芬,并返回
       return '<b>'+item+'</b>';
})
console.log(arr2);
6.filter
var arr=[1,2,3];
var arr2=arr.filter(function(item, index){
       //通過某一個條件過濾數(shù)組
       if(item >= 2){
              return true;
       }
})
console.log(arr2);

4.對象api

20.png

總結(jié):

24.png
8.JS-WEB-API
25.png
26.png
1.DOM操作
(1).獲取DOM節(jié)點。
(2). ()()()

27.png
28.png
29.png
30.png
31.png
32.png
33.png
34.png
9.BOM
35.png
36.png
37.png
38.png
10.事件
39.png
40.png
10.Ajax交互
41.png
42.png
43.png

1.狀態(tài)碼

44.png
45.png
46.png
47.png
48.png
49.png
50.png
51.png
52.png
53.png
54.png
11.存儲
55.png
56.png
57.png
58.png
12.開發(fā)工具
59.png
60.png
13.模塊化
61.png
62.png
63.png
64.png
65.png
66.png
67.png
68.png
69.png
14.前端運行環(huán)境
70.png
71.png
72.png
73.png
74.png
75.png
15.性能優(yōu)化
76.png
77.png
16.安全性

1.XSS跨站請求攻擊
2.XSRF跨站點請求偽造

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剧防,一起剝皮案震驚了整個濱河市植锉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诵姜,老刑警劉巖汽煮,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棚唆,居然都是意外死亡暇赤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門宵凌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞋囊,“玉大人,你說我怎么就攤上這事瞎惫×锔” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵瓜喇,是天一觀的道長挺益。 經(jīng)常有香客問我,道長乘寒,這世上最難降的妖魔是什么望众? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上烂翰,老公的妹妹穿的比我還像新娘夯缺。我一直安慰自己,他們只是感情好甘耿,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布踊兜。 她就那樣靜靜地躺著,像睡著了一般佳恬。 火紅的嫁衣襯著肌膚如雪捏境。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天毁葱,我揣著相機與錄音典蝌,去河邊找鬼。 笑死头谜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸠澈。 我是一名探鬼主播柱告,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笑陈!你這毒婦竟也來了际度?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涵妥,失蹤者是張志新(化名)和其女友劉穎乖菱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓬网,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡窒所,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帆锋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吵取。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锯厢,靈堂內(nèi)的尸體忽然破棺而出皮官,到底是詐尸還是另有隱情,我是刑警寧澤实辑,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布捺氢,位于F島的核電站,受9級特大地震影響剪撬,放射性物質(zhì)發(fā)生泄漏摄乒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缺狠。 院中可真熱鬧问慎,春花似錦、人聲如沸挤茄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穷劈。三九已至笼恰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歇终,已是汗流浹背社证。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留评凝,地道東北人追葡。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像奕短,于是被迫代替她去往敵國和親宜肉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容