JS面試題

延遲加載JS有哪些方式?

async defer 都可以做到延遲加載js
例如:<script defer type="text/javascript" src="script.js">
defer:等html全部解析完成谈撒,才會執(zhí)行js代碼,順次執(zhí)行js腳本
async:async是和html解析同步的(一起的)匾南,不是順次執(zhí)行js腳本(誰先加載完誰先執(zhí)行)

面試題:JS數(shù)據(jù)類型有哪些啃匿?

基本類型
string number boolean null undefined symbol bigint
引用類型
object

面試題: JS數(shù)據(jù)類型

console.log(true+1) //2
console.log('name'+true) //'nametrue'
字符串和其他類型 相加 變成鏈接類型
console.log(undefined +1) //NaN
console.log(typeof null) //object


image.png
typeof(NaN)
'number'
typeof(undefined)
'undefined'
typeof(null)
'object'
NaN 是一個(gè)數(shù)值類型,但是不是一個(gè)具體的數(shù)字蛆楞。

面試題:null和undefined的區(qū)別溯乒?

1、作者在設(shè)計(jì)js的都是先設(shè)計(jì)null(為什么設(shè)計(jì)null:最初設(shè)計(jì)js的時(shí)候借鑒了Java的語言)
2豹爹、null會被隱式轉(zhuǎn)換成0裆悄,很不容易發(fā)現(xiàn)錯(cuò)誤。
3臂聋、先有null后有undefined光稼,出來undefined是為了填補(bǔ)之前的坑。
具體區(qū)別:
javascript的最初版本是這樣區(qū)分的孩等,null是一個(gè)表示“無”的對象(空對象指針)艾君,轉(zhuǎn)為數(shù)值時(shí)為0,undefined是一個(gè)表示“無”的原始值肄方,轉(zhuǎn)為數(shù)值時(shí)為NaN.

面試題:==和===有什么不同冰垄?

>==:比較的是值。
 ===:除了比較值权她,還比較類型虹茶。

面試題:JS微任務(wù)和宏任務(wù)(知不知道js是怎么執(zhí)行的以及執(zhí)行順序)

1、js是單線程語言
2隅要、js代碼執(zhí)行流程:同步執(zhí)行完=>事件循環(huán)
同步的任務(wù)都執(zhí)行完了蝴罪,才會執(zhí)行事件循環(huán)的內(nèi)容
進(jìn)入事件循環(huán) :請求 、定時(shí)器拾徙、事件...
3洲炊、事件循環(huán)中包含:【微任務(wù) 、宏任務(wù)】
微任務(wù):promise.then
宏任務(wù):setTimeout
要執(zhí)行宏任務(wù)的前提是清空了所有的微任務(wù)
流程:同步=》事件循環(huán)【微任務(wù)和宏任務(wù)】=》微任務(wù)=》宏任務(wù)=》微任務(wù)....
setTimeout(function(){
console.log(1)
})
new Promise((resolve)=>{
console.log('Promise 1') //同步
resolve()
}).then(()=>{
console.log('微1')
}).then(()=>{
console.log('微2')
})
console.log(2) //同步
//結(jié)果:Promise 1,2暂衡,1询微,微2,1

面試題:JS作用域考題

1狂巢、除了函數(shù)外撑毛,js是沒有塊級作用域的。
2唧领、作用域鏈:內(nèi)部可以訪問外部的變量藻雌,但是外部不能訪問內(nèi)部的變量。
注意:如果內(nèi)部有斩个,優(yōu)先查找到內(nèi)部胯杭,如果內(nèi)部沒有就查找外部的。
3受啥、注意聲明變量是用var還是沒有寫(window.)
4做个、注意:js有變量提升的機(jī)制【變量懸掛聲明】

  1. 優(yōu)先級:聲明變量 > 聲明普通函數(shù) > 參數(shù) > 變量提升
面試的時(shí)候怎么看:
  1. 本層作用域有沒有此變量【注意變量提升】
  2. 注意:js除了函數(shù)外沒有塊級作用域
  3. 普通聲明函數(shù)是不看寫函數(shù)的時(shí)候順序

考題一:

function c(){
    var b = 1;
    function a(){
        console.log( b ); // undefined
        var b = 2;
        console.log( b );//2
    }
    a();
    console.log( b ); //1
}
c();

考題二:

var name = 'a';
(function(){ //var name ;
    if( typeof name == 'undefined' ){
        var name = 'b';
        console.log('111'+name); //111b
    }else{
        console.log('222'+name);
    }
})()

考題三:

function fun( a ){
    var a = 10;
    function a(){}
    console.log( a );//100
}
fun( 100 );
function fun( a ){
    var a = 10;
    function a(){}
    console.log( a );//10
}
fun(  );

js對象考題

js對象注意點(diǎn) new創(chuàng)建新對象

  1. 對象是通過new操作符構(gòu)建出來的,所以對象之間不相等(除了引用外)滚局;
  2. 對象注意:引用類型(共同一個(gè)地址)居暖;
  3. 對象的key都是字符串類型;
    4.對象如何找屬性|方法
    查找規(guī)則:先在對象本身找==》函數(shù) (構(gòu)造函數(shù)中找)==》對象原型中找 ==》構(gòu)造函數(shù)原型中找==》對象上一層原型查找

考題一:

 [1,2,3] === [1,2,3]   //false

考題二:

 var obj1 = {
    a:'hellow'
}
var obj2 = obj1; //引用地址相同
obj2.a = 'world';
console.log(obj1);  // {a:'world'}
(function(){
    console.log(a); //變量提升 undefined    
    var a = 1;
})();

考題三:

var a = {}
var b = {
    key:'a'
}
var c = {
    key:'c'
}

a[b] = '123';
a[c] = '456';

console.log( a[b] ); //456

JS作用域+this指向+原型的考題

考題一:

function Foo(){
    getName = function(){console.log(1)} //注意是全局的window.
    return this;
}

Foo.getName = function(){console.log(2)}
Foo.prototype.getName = function(){console.log(3)}
var getName = function(){console.log(4)}
function getName(){
    console.log(5)
}

Foo.getName();    //2
getName();    //4 聲明變量>聲明普通函數(shù)

//getName = function(){console.log(1)} //注意是全局的window.
Foo().getName();  //1
getName();       //1
new Foo().getName(); //3
//先在對象本身找 ===> 構(gòu)造函數(shù)中找 ===> 對象原型中找 ===> 構(gòu)造函數(shù)原型中找 ===> 對象上一層原型查找

考題二:

var o = {
    a:10,
    b:{
        a:2,
        fn:function(){
            console.log( this.a ); //2
            console.log( this );  //代表b對象
        }
    }
}
o.b.fn();

考題三:

window.name = 'ByteDance';
function A(){
    this.name = 123;
}
A.prototype.getA = function(){
    console.log( this );
    return this.name + 1;
}
let a = new A();
let funcA = a.getA;
funcA(); // this 代表window  ByteDance1

考題四:

var length = 10;
function fn(){
    return this.length + 1;
}
var obj = {
    length:5,
    test1:function(){
        return fn();
    }
}
obj.test2 = fn;
console.log( obj.test1() ); //11
console.log( fn()===obj.test2() );//11,6 //false
console.log( obj.test1() == obj.test2() ); //11 6 //false


JS判斷變量是不是數(shù)組藤肢,你能寫出哪些方法太闺?

方式一:isArray

var arr = [1,2,3]
console.log(Array.isArray(arr))

方式二:instanceof [可寫 可不寫]

var arr = [1,2,3]
console.log(arr instanceof Array )

方式三:原型prototype

var arr = [1,2,3]
console.log(Object.prototype.toString.call(arr).indexOf('Array')>-1 )

方式四:isPrototypeOf()

var arr = [1,2,3]
console.log(Array.prototype.isPrototypeOf(arr))

方式四:constructor

var arr = [1,2,3]
console.log(  arr.constructor.toString().indexOf('Array') > -1 )

slice是干嘛的、splice是否會改變原數(shù)組

  1. slice是來截取的
    參數(shù)可以寫slice(3)嘁圈、slice(1,3)省骂、slice(-3)
    返回的是一個(gè)新的數(shù)組
  2. splice 功能有:插入、刪除丑孩、替換
    返回:刪除的元素
    該方法會改變原數(shù)組

JS數(shù)組去重

方式一:new set

var arr1 = [1,2,3,4,5,6,6,6]
function unique(arr1){
  return [...new Set(arr1)]
}
console.log(unique(arr1))

方式二:indexOf

var arr1 = [1,2,3,4,5,6,6,6]
function unique(arr){
   var brr = []
   for(var i = 0 ; i<arr.length;i++){
        if(brr.indexOf(arr[i]) ==  -1){
              brr.push(arr[i])
        }
    }
     return brr
}
console.log(unique(arr1))

方式三:sort

var arr1 = [1,2,3,4,5,6,6,6]
function unique(arr){
   arr = arr.sort()
   var brr = []
   for(var i = 0 ; i<arr.length;i++){
        if(arr[i] !== arr[i-1]){
              brr.push(arr[i])
        }
    }
     return brr
}
console.log(unique(arr1))

找出多維數(shù)組最大值

function fnArr(arr){
  var newArr = [];
  arr.forEach((item,index)=>{
      newArr.push(Math.max(...item))
   })
  return newArr;
}
console.log(fnArr([
    [4,5,1,3],
    [13,27,18,26],
    [32,35,37,39],
    [1000,1001,857,1]
]));

面試題:給字符串新增方法實(shí)現(xiàn)功能

給字符串對象定義一個(gè)addPrefix函數(shù)冀宴,當(dāng)傳入一個(gè)字符串str時(shí),它會返回新的帶有指定前綴的字符串温学,例如:console.log( 'world'.addPrefix('hello') ) 控制臺會輸出helloworld
String.prototype.addPrefix = function(str){
  return str+this
}
console.log('world'.addPrefix('hello'))

面試題:面試題:找出字符串出現(xiàn)最多次數(shù)的字符以及次數(shù)

var str = 'aaabbbbbccddddddddddx';
var obj = {};
for(var i=0;i<str.length;i++){
    var char = str.charAt(i);
    if( obj[char] ){
        obj[char]++;
    }else{
        obj[char] = 1;
    }
}
console.log( obj );
//統(tǒng)計(jì)出來最大值
var max = 0;
for( var key in obj ){
    if( max < obj[key] ){
        max = obj[key];
    }
}
//拿最大值去對比
for( var key in obj ){
    if( obj[key] == max ){
        console.log('最多的字符是'+key);
        console.log('出現(xiàn)的次數(shù)是'+max);
    }
}

new操作符具體做了什么

  1. 創(chuàng)建了一個(gè)空的對象
  2. 將空對象的原型略贮,指向于構(gòu)造函數(shù)的原型
  3. 將空對象作為構(gòu)造函數(shù)的上下文(改變this指向)
  4. 對構(gòu)造函數(shù)有返回值的處理判斷
function Fun( age,name ){
    this.age = age;
    this.name = name;
}
function create( fn , ...args ){
    //1. 創(chuàng)建了一個(gè)空的對象
    var obj = {}; //var obj = Object.create({})
    //2. 將空對象的原型,指向于構(gòu)造函數(shù)的原型
    Object.setPrototypeOf(obj,fn.prototype);
    //3. 將空對象作為構(gòu)造函數(shù)的上下文(改變this指向)
    var result = fn.apply(obj,args);
    //4. 對構(gòu)造函數(shù)有返回值的處理判斷
    return result instanceof Object ? result : obj;
}
console.log( create(Fun,18,'張三')   )

面試題:閉包

1. 閉包是什么
閉包是一個(gè)函數(shù)加上到創(chuàng)建函數(shù)的作用域的連接仗岖,閉包“關(guān)閉”了函數(shù)的自由變量逃延。
2. 閉包可以解決什么問題【閉包的優(yōu)點(diǎn)】
   2.1內(nèi)部函數(shù)可以訪問到外部函數(shù)的局部變量
   2.2 閉包可以解決的問題
     var lis = document.getElementsByTagName('li');
      for(var i=0;i<lis.length;i++){
        (function(i){
          lis[i].onclick = function(){
            alert(i);
          }
        })(i)
      }
3. 閉包的缺點(diǎn)
  3.1 變量會駐留在內(nèi)存中,造成內(nèi)存損耗問題轧拄。
                解決:把閉包的函數(shù)設(shè)置為null
  3.2 內(nèi)存泄漏【ie】 ==> 可說可不說揽祥,如果說一定要提到ie

面試題:原型鏈

1、原型可以解決什么問題檩电?
對象共享屬性和共享方法
2拄丰、誰有原型
函數(shù)擁有 prototype
對象擁有 proto
3府树、對象查找屬性或者方法的順序
先在對象本身查找==》構(gòu)造函數(shù)中查找==》對象原型中找==》構(gòu)造函數(shù)中的原型中找==》當(dāng)前的原型的原型中找
4、原型鏈
4.1是什么料按?就是把原型串聯(lián)起來
4.2 原型鏈的最頂端是null

面試題: JS繼承有哪些方式

方式一:ES6

class Parent{
    constructor(){
        this.age = 18;
    }
}

class Child extends Parent{
    constructor(){
        super();
        this.name = '張三';
    }
}
let o1 = new Child();
console.log( o1,o1.name,o1.age );

方式二:原型鏈繼承

function Parent(){
    this.age = 20;
}
function Child(){
    this.name = '張三'
}
Child.prototype = new Parent();
let o2 = new Child();
console.log( o2,o2.name,o2.age );

方式三:借用構(gòu)造函數(shù)繼承

function Parent(){
    this.age = 22;
}
function Child(){
    this.name = '張三'
    Parent.call(this);
}
let o3 = new Child();
console.log( o3,o3.name,o3.age );

方式四:組合式繼承

function Parent(){
    this.age = 100;
}
function Child(){
    Parent.call(this);
    this.name = '張三'
}
Child.prototype = new Parent();
let o4 = new Child();
console.log( o4,o4.name,o4.age );

面試題:說一下call奄侠、apply、bind區(qū)別

共同點(diǎn):功能一致

可以改變this指向
語法:函數(shù).call() 载矿、函數(shù).apply()垄潮、函數(shù).bind()

var str = '你好'
var obj = { str :'stsaa'}
function fun(){
  console.log(this,this.str)
}
fun.call(obj) //call立即執(zhí)行
fun.apply(obj) //apply立即執(zhí)行
fun.bind(obj)() //bind不會立即執(zhí)行 因?yàn)閎ind返回的是函數(shù)
fun()

var str = '你好'
var obj = { str :'stsaa'}
function fun(name,age){
  this.name = name
  this.age = age
  console.log(this,this.str)
}
// fun.call(obj) //call立即執(zhí)行
// fun.apply(obj) //apply立即執(zhí)行
// fun.bind(obj)() //bind不會立即執(zhí)行 因?yàn)閎ind返回的是函數(shù)
// fun()
fun.call(obj,'張三',88) //參數(shù)需要挨個(gè)寫
fun.apply(obj,['張三',88])  //參數(shù)是數(shù)組
fun.bind(obj,'張三',88)() //參數(shù)需要挨個(gè)寫
// fun()

區(qū)別:

1、call闷盔、apply可以立即執(zhí)行弯洗。bind不會立即執(zhí)行,因?yàn)榉祷氐氖且粋€(gè)函數(shù)需要加入()執(zhí)行逢勾。
2牡整、參數(shù)不同:apply第二個(gè)參數(shù)是數(shù)組。call和bind有多個(gè)參數(shù)挨個(gè)寫溺拱。

場景:

1果正、call、apply可以立即執(zhí)行盟迟。bind不會立即執(zhí)行,因?yàn)榉祷氐氖且粋€(gè)函數(shù)需要加入()執(zhí)行潦闲。
2攒菠、參數(shù)不同:apply第二個(gè)參數(shù)是數(shù)組。call和bind有多個(gè)參數(shù)挨個(gè)寫歉闰。

場景:
1. 用apply的情況
var arr1 = [1,2,4,5,7,3,321];
console.log( Math.max.apply(null,arr1) )

2. 用bind的情況
var btn = document.getElementById('btn');
var h1s = document.getElementById('h1s');
btn.onclick = function(){
    console.log( this.id );
}.bind(h1s)

面試題:深拷貝和淺拷貝

共同點(diǎn):復(fù)制
1辖众、淺拷貝:只復(fù)制引用,而未復(fù)制真正的值和敬。//相互受影響
var arr1 = ['a','b','c','d']
var arr2 = arr1;
arr1[0] = '你好嗎'
arr2[1] = '還行'
console.log(arr1,arr2)

var obj1 = {a:1,b:2}
var obj2 = Object.assign(obj1);


2. 深拷貝:是復(fù)制真正的值 (不同引用)
var obj3 = {
    a:1,
    b:2
}
var obj4 = JSON.parse(JSON.stringify( obj3 ));

//遞歸的形式
function copyObj( obj ){
    if(  Array.isArray(obj)  ){
        var newObj = [];
    }else{
        var newObj = {};
    }
    for( var key in obj ){
        if( typeof obj[key] == 'object' ){
            newObj[key] = copyObj(obj[key]);
        }else{
            newObj[key] = obj[key];
        }
    }
    return newObj;
}
console.log(  copyObj(obj5)  );

面試題:localStorage凹炸、sessionStorage、cookie的區(qū)別

共同點(diǎn):在客戶端存放數(shù)據(jù)
區(qū)別:
1昼弟、數(shù)據(jù)存放有效期
sessionStorage : 僅在當(dāng)前瀏覽器窗口關(guān)閉之前有效啤它。【關(guān)閉瀏覽器就沒有了】
localStorage : 始終有效舱痘,窗口或者瀏覽器關(guān)閉也一直保存变骡,所以叫持久化存儲。
cookie:只在設(shè)置的cookie過期時(shí)間之前有效芭逝,即使窗口或者瀏覽器關(guān)閉也有效塌碌。
2、localStorage旬盯、sessionStorage不可以設(shè)置過期時(shí)間
cookie 有國企時(shí)間台妆、可以設(shè)置過期(把時(shí)間調(diào)整到之前的時(shí)間翎猛,就過期了)
3、存儲大小的限制
cookie 存儲量不能超過4k
localStorage 接剩、sessionStorage 不能超過5M
****根據(jù)不同的瀏覽器存儲的大小不同的***

面試題:什么是語義化標(biāo)簽

  1. 易讀性和維護(hù)性更好切厘。
  2. seo成分會更好,蜘蛛抓取更好搂漠。
  3. IE8不兼容HTML5標(biāo)簽的迂卢。解決:可以通過html5shiv.js去處理。

面試題:::before 和 :after中雙冒號和單冒號 有什么區(qū)別桐汤?解釋一下這2個(gè)偽元素的作用

  1. 區(qū)別
    :是偽類而克、::偽元素 ===》是為了做區(qū)分
    2.是什么?作用
    元素before之前 怔毛、 元素after之后
    作用:清除浮動(dòng)员萍、樣式布局上也有作用

面試題:如何關(guān)閉IOS鍵盤首字母自動(dòng)大寫

<input type="text" autocapitalize='off'>

面試題:怎么讓Chrome支持小于12px 的文字?

Chrome默認(rèn)字體大小是:16px
**每個(gè)瀏覽器默認(rèn)字體大小可能都不一樣

<style type="text/css">
div{
    font-size:10px;
}
div span{
    display: inline-block;
    -webkit-transform:scale(1.6);
}
</style>

面試題:rem和em區(qū)別

相對于font-size

em針對于父元素的font-size
rem針對于根(html)元素的font-size

面試題:ios系統(tǒng)中元素被觸摸時(shí)產(chǎn)生的半透明灰色遮罩怎么去掉

<style>
    a,button,input,textarea{
        -webkit-tap-highlight-color: rgba(0,0,0,0);
    }
</style>

面試題:webkit表單輸入框placeholder的顏色值能改變嗎拣度?

<style type="text/css">
    input::-webkit-input-placeholder{
        color:red;
    }
</style>

面試題:禁止ios長按時(shí)觸發(fā)系統(tǒng)的菜單碎绎,禁止ios&android長按時(shí)下載圖片

禁止ios 長按時(shí)觸發(fā)系統(tǒng)的菜單,禁止ios&android長按時(shí)下載圖片
html,body{
    touch-callout: none;
    -webkit-touch-callout: none;
    
    user-select:none;
    -webkit-user-select:none;
}

面試題:禁止ios和android用戶選中文字

html,body{
    user-select:none;
    -webkit-user-select:none;
}

面試題:自適應(yīng)

淘寶無限適配【移動(dòng)端】:淘寶無限適配 + 布局單位使用rem

響應(yīng)式

1. 是什么抗果?
    一個(gè)URL可以響應(yīng)多端
2. 語法結(jié)構(gòu)
    @media only screen and (max-width: 1000px){
        ul li:last-child{
            display: none;
        }
    }

    only : 可以排除不支持媒體查詢的瀏覽器
    screen : 設(shè)備類型
    max-width | max-height
    min-width | min-height 
3. 響應(yīng)式圖片【性能優(yōu)化】
    <picture>
        <source srcset="1.jpg" media='(min-width:1000px)'>
        <source srcset="2.jpg" media='(min-width:700px)'>
        <img srcset="3.jpg">
    </picture>

面試題:響應(yīng)式

1. 是什么筋帖?
    一個(gè)URL可以響應(yīng)多端
2. 語法結(jié)構(gòu)
    @media only screen and (max-width: 1000px){
        ul li:last-child{
            display: none;
        }
    }

    only : 可以排除不支持媒體查詢的瀏覽器
    screen : 設(shè)備類型
    max-width | max-height
    min-width | min-height 
3. 響應(yīng)式圖片【性能優(yōu)化】
    <picture>
        <source srcset="1.jpg" media='(min-width:1000px)'>
        <source srcset="2.jpg" media='(min-width:700px)'>
        <img srcset="3.jpg">
    </picture>

布局方案

一、什么情況下采用響應(yīng)式布局
    
    數(shù)據(jù)不是特別多冤馏,用戶量不是特別大日麸,純展示類的項(xiàng)目適合響應(yīng)式布局
    
    例如:公司的官網(wǎng)、專題頁面
    
    特別追求性能的項(xiàng)目逮光,不太適合響應(yīng)式代箭,因?yàn)槿绻砑恿撕芏嗟捻憫?yīng)式就會造成加載速度變慢。

二涕刚、pc + 移動(dòng)端應(yīng)該做什么樣的布局方案
    注意:訪問量還可以或者比較大嗡综,類似于淘寶網(wǎng)。
    
    pc是一套杜漠,會加入一點(diǎn)點(diǎn)響應(yīng)式极景。
    移動(dòng)端是一套,會使用自適應(yīng)的布局方式碑幅。

三戴陡、pc的設(shè)計(jì)圖

    ui:1980
    筆記本電腦:1280
    ui圖的寬度和電腦的寬度不對應(yīng)該怎么辦?
        1. 把ui圖進(jìn)行等比縮放沟涨,縮放成和電腦一樣的尺寸
        2. 換1980的電腦
        
四恤批、移動(dòng)端的設(shè)計(jì)圖

    寬度:750
    因?yàn)?50設(shè)計(jì)圖/2就是375,正好是iphone6的尺寸裹赴,我們要把iphone6的尺寸做為基準(zhǔn)點(diǎn)喜庞。

面試題:var诀浪、let、const區(qū)別

var延都、let雷猪、const 共同點(diǎn)都是可以聲明變量的
區(qū)別一:
var 具有變量提升的機(jī)制
let和const沒有變量提升的機(jī)制
區(qū)別二:
var 可以多次聲明同一個(gè)變量
let和const不可以多次聲明同一個(gè)變量
區(qū)別三:
var、let聲明變量的
const聲明常量
var和let聲明的變量可以再次賦值晰房,但是const不可以再次賦值了求摇。
區(qū)別四:
var聲明的變量沒有自身作用域
let和const聲明的變量有自身的作用域

面試題:作用域考題

考題一:let和const沒有變量提升性

console.log( str );//undefined
var str = '你好';

console.log( num );//報(bào)錯(cuò)
let num = 10;
    var n = 2;
    if( true ){
        var n = 1;
    }
    console.log( n );//1
}
demo();


function demo(){
    let n = 2;
    if( true ){
        let n = 1;
    }
    console.log( n );//2
}
demo();

考題三:可以修改

const obj = {
    a:1
}
obj.a = 11111;
console.log( obj ) //{a:11111}

const arr = ['a','b','c'];
arr[0]= 'aaaaa';
console.log( arr ); //['aaaaa','b','c']

面試題:將下列對象進(jìn)行合并

方式一:Object.assign

const a = {a:1,b:4};
const b = {b:2,c:3};

let obj1 = Object.assign(a,b);
console.log( obj1 );

方式二:...

let obj2 = {...a,...b};
console.log( obj2 );

方式三:自己封裝方法

function extend( target,  source ){
    for(var key in source){
        target[key] = source[key];
    }
    return target;
}
console.log( extend(a,b) );

面試題:箭頭函數(shù)和普通函數(shù)有什么區(qū)別?

  1. this指向的問題
    箭頭函數(shù)中的this只在箭頭函數(shù)定義時(shí)就決定的殊者,而且不可修改的(call与境、apply、bind)
    ****箭頭函數(shù)的this指向定義時(shí)候猖吴、外層第一個(gè)普通函數(shù)的this
  2. 箭頭函數(shù)不能new(不能當(dāng)作構(gòu)造函數(shù))
  3. 箭頭函數(shù)prototype
  4. 箭頭函數(shù)arguments

面試題:Promise有幾種狀態(tài)

有三種狀態(tài):
pending(進(jìn)行中)
fulfilled(已成功)
rejected(已失斔さ蟆)

面試題:find和filter的區(qū)別

區(qū)別一:返回的內(nèi)容不同
filter 返回是新數(shù)組
find 返回具體的內(nèi)容
區(qū)別二:
find :匹配到第一個(gè)即返回
filter : 返回整體(沒一個(gè)匹配到的都返回)

面試題:some和every的區(qū)別

some ==》 如果有一項(xiàng)匹配則返回true
every ==》 全部匹配才會返回true

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市海蔽,隨后出現(xiàn)的幾起案子共屈,更是在濱河造成了極大的恐慌,老刑警劉巖党窜,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拗引,死亡現(xiàn)場離奇詭異,居然都是意外死亡幌衣,警方通過查閱死者的電腦和手機(jī)寺擂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泼掠,“玉大人,你說我怎么就攤上這事垦细≡裾颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵括改,是天一觀的道長腻豌。 經(jīng)常有香客問我,道長嘱能,這世上最難降的妖魔是什么吝梅? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮惹骂,結(jié)果婚禮上苏携,老公的妹妹穿的比我還像新娘。我一直安慰自己对粪,他們只是感情好右冻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布装蓬。 她就那樣靜靜地躺著,像睡著了一般纱扭。 火紅的嫁衣襯著肌膚如雪牍帚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天乳蛾,我揣著相機(jī)與錄音暗赶,去河邊找鬼。 笑死肃叶,一個(gè)胖子當(dāng)著我的面吹牛蹂随,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播被环,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼糙及,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筛欢?” 一聲冷哼從身側(cè)響起浸锨,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎版姑,沒想到半個(gè)月后柱搜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剥险,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年聪蘸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片表制。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡健爬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出么介,到底是詐尸還是另有隱情娜遵,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布壤短,位于F島的核電站设拟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏久脯。R本人自食惡果不足惜纳胧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帘撰。 院中可真熱鬧跑慕,春花似錦、人聲如沸摧找。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钮科,卻和暖如春唤衫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绵脯。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工佳励, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛆挫。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓赃承,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悴侵。 傳聞我的和親對象是個(gè)殘疾皇子瞧剖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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