电竞比分网-中国电竞赛事及体育赛事平台

分享

前端面試題整理——Javascript基礎(chǔ)

 路人甲Java 2021-09-27
常見(jiàn)值類(lèi)型:
let a; //undefined
let s = 'abc';
let n = 100;
let b = true;
let sb = Symbol('s');
let nn = NaN
 
常見(jiàn)引用類(lèi)型:
const obj = {x: 100};
const arr = [1, 2, 3];
const n = null;//特殊引用類(lèi)型,指針指向?yàn)榭?/div>
// 特殊引用類(lèi)型,但不用于存儲(chǔ)數(shù)據(jù),所以沒(méi)有“拷貝,復(fù)制函數(shù)”這一說(shuō)
function fn(){}
console.log(typeof obj) //obj
console.log(typeof arr) //obj
console.log(typeof n)   //obj
console.log(typeof fn)  //function
 
typeof運(yùn)算符:
1、識(shí)別所有的值類(lèi)型
2、識(shí)別函數(shù)
3、判斷是否是引用類(lèi)型 (不可再細(xì)分)
let a; //undefined
    let s = 'abc';
    let n = 100;
    let b = true;
    let sb = Symbol('s');
    console.log(typeof a);// 'undefined'
    console.log(typeof s);// 'string'
    console.log(typeof n);// 'number'
    console.log(typeof b);// 'boolean'
    console.log(typeof sb);// 'symbol'

    /*判斷函數(shù)*/
    function fn(){}
    console.log(typeof fn); // 'function'

    /*判斷是否是引用類(lèi)型 (不可再細(xì)分)*/
    console.log(typeof null); // 'object'
    console.log(typeof []); // 'object'
    console.log(typeof {}); // 'object'
View Code

 

深拷貝:
const obj = {
        a: 100,
        b: {
            b1: [1, 2, 3],
            b2: 'string'
        },
        c: ['a', 'b', 'c']
    }

    /*
    *  沒(méi)做深拷貝的效果
    const obj2 = obj
    obj2.a = 200
    obj2.b.b2 = 'abc123'
    obj2.c[0] = 'aa'
    console.log(obj)
    console.log(obj2)

    obj2修改的內(nèi)容會(huì)影響obj的內(nèi)容,因?yàn)樗麄冃薷牡亩际峭粋€(gè)堆內(nèi)容
    * */

    const obj2 = deepClone(obj);
    obj2.a = 200
    obj2.b.b2 = 'abc123'
    obj2.c[0] = 'aa'
    console.log(obj)
    console.log(obj2)

    /**
     * 深拷貝
     * @param {Object} obj 要深拷貝的對(duì)象
     * */
    function deepClone(obj = {}) {
        // obj如果不是引用類(lèi)型,或者是null,直接返回
        if (typeof obj !== 'object' || obj == null) {
            return obj
        }
        // 初始化返回結(jié)果
        let result;
        if (obj instanceof Array) {
            result = []
        } else {
            result = {}
        }
        // 遍歷obj
        for (let key in obj) {
            // 保證key不是原型的屬性
            if (obj.hasOwnProperty(key)) {
                // 遞歸調(diào)用
                result[key] = deepClone(obj[key])
            }
        }
        return result
    }
View Code

 

類(lèi)型轉(zhuǎn)換??伎键c(diǎn):
1、字符串拼接
let a = 100 + 10;//110
let b = 100 + '10';// '10010'
let c = true + '10';// 'true10'
 
2、==運(yùn)算符
100 == '100' // true
0 == '' // true
0 == false // true
false == '' // true
null == undefined // true
 
// ==運(yùn)算符的使用場(chǎng)景
// 除了==null之外,其他一律都用 === ,例如:
const obj = {x:100}
if(obj.a == null){}
// 相當(dāng)于: if(obj.a === null || obj.a === undefined){}
 
3、if語(yǔ)句和邏輯運(yùn)算
truly變量:!!a === true 的變量
falsely變量:!!a === false 的變量
以下是falsely變量,除此之外都是truly變量
    /*
    * !!0 === false
    * !!NaN === false
    * !!'' === false
    * !!null === false
    * !!undefined === false
    * !!false === false
    * */
在if語(yǔ)句中的判斷就是判斷是truly變量還是falsely變量。truly變量就是為真,falsely變量就是為false
 
邏輯判斷 與或非 && || !

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多