(前端面试)每日5题

1、JS基本数据类型中null和undined的区别以及应用

        都是代表没有值

        区别:null表示 "没有对象",该处不应该有值

                   undefined表示 "缺少值",该处应该有值,但是还没定义

                    转为数值也不同,null->0,undefined->NaN(不是一个数字)

        什么时候会有null:

                       a、作为函数的参数,表示该函数的参数不是对象

                       b、作为对象原型链的终点

        什么时候会出现undefined:

                        a、变量被声明了,但是没有赋值,就等于undefined

                        b、调用函数时,应该提供的参数没有提供,该参数就等于undefined

                        c、对象没有赋值的属性,该属性的值为undefined

                        d、函数没有返回值时,默认返回undefined

2、JS中如何判断一个属性是属于实例对象还是继承于构造函数

        hasOwnProperty() 检测一个属性是否属于自身对象,还是继承于原型链上的

function Person(name, age) {
    this.name = name;
    this.age = age;
};

Person.prototype.sex = '男';

let p = new Person('小飞', 25);

console.log(p.hasOwnProperty('name'));//true
console.log(p.hasOwnProperty('sex'));//false

3、JS中如何阻止事件冒泡和默认行为

        阻止默认行为 e.preventDefault()

        阻止事件冒泡 e.stopPropagation() 在子元素事件监听中

4、JS数据类型检测的方式有哪些

        // 1、typeof(检测数据类型的运算符)
        console.log("数值", typeof 10);
        console.log("布尔", typeof true);
        console.log("字符串", typeof '你好');
        console.log("数组", typeof []);
        console.log("函数", typeof function () {});
        console.log("对象", typeof {});
        console.log("undefined", typeof undefined);
        console.log("null", typeof null);

        // 2、instanceof(检测某一个实例是否属于这个类)
        // 可以正确判断对象的类型,内部运行机制,判断它的原型链上能否找到这个类型的原型
        console.log("数值", 10 instanceof Number);
        console.log("布尔", true instanceof Boolean);
        console.log("字符串", "你好" instanceof String);
        console.log("数组", [] instanceof Array);
        console.log("函数", function () {} instanceof Function);
        console.log("对象", {} instanceof Object);

        // 3、constructor(检测实例和类的关系,从而检测数据类型),引用原来构造该对象的函数
        console.log("数值", (10).constructor === Number);
        console.log("布尔", (true).constructor === Boolean);
        console.log("字符串", ('你好').constructor === String);
        console.log("数组", ([]).constructor === Array);
        console.log("函数", (function () {}).constructor === Function);
        console.log("对象", ({}).constrictor === Object);

        // 4、Object.prototype.toString.call()(检测数据类型)
        // var a=Object.prototype.toString;

        console.log("数值", a.call(10));
        console.log("布尔", a.call(true));
        console.log("字符串", a.call('你好'));
        console.log("数组", a.call([]))
        console.log("函数", a.call(function(){}))
        console.log("对象", a.call({}));
        console.log("undefined", a.call(undefined));
        console.log("null", a.call(null));

5、JS有哪些数据类型,他们的区别是?

        总共七种

        基本数据类型:string/number/boolean/null/undefined/symbol(代表创建之后独一无二且不可变的数据类型)

        引用数据类型:Object

        区别:

                a、声明变量时的存储分配

                        基本数据类型存储栈中,var a =10;

                        引用数据类型存储在堆中,var arr = [1, 2, 3];

                b、不同的内存分配机制也带来了不同的访问机制

                        不可以直接访问堆内空间的位置以及直接操作堆内存空间,只能操作对象在栈内存中引用地址

                        基本数据类型直接访问到,引用数据类型方位引用地址,根据引用地址找到堆中实体

                c、复制变量的不同

                        基本数据类型:var a = 1, var b = a 将原始的值复制新的变量,传值

                        引用数据类型:var obj = {name: '小飞'}, var obj1 = obj, 将引用地址赋值给新变量,传址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值