web前端面试-------javaScript基础知识点之数据类型

马上准备面试了,之前一直在学习web的时候,都没来得及总结有关javaScript的知识点,因为在总结了很多前端面试题的奇怪问题后,写了个清单,并根据我所学知识和容易出现的错误进行归类总结,以备当面试时笔试或者面对面面试的时候能有更好的把握。

javaScript 基础知识点

  • 数据类型:
    - 通常有:
    String 字符串,
    Number 数字,
    Boolean 布尔,
    Array 数组,
    Object 对象,
    Null(值为空),
    Undefined(函数未定义)
    - 可以用typeof()鉴定变量的类型
    - 因为js有弱类型的特征,每次声明或未初始化变量都不会主动表明变量类型,只有在赋值后才能体现变量的类型,故默认的初始化值为undefined
  • 错的区域
    1.Undefind
    num是已声明但是未初始化变量,但是它的类型还是为Undefind
    age 是未声明而且未初始化变量,但是它的类型也是Undefind,只是它不能当时变量直接使用
var num;

console.log("num:"+typeof num);
console.log("age:"+ typeof age);
console.log("num:"+num);
console.log("age:"+age);

这里写图片描述

2.null
null表示空对象指针,
undefined类型是派生自Null的,null被用作形容空对象指针,所以在变量为object的时候,可以使用Null作为初始化值,那样变量就会自动指向为object类型

var num=null;
console.log(typeof null);
console.log(typeof num);

这里写图片描述

3.布尔boolean
转换规则是必须要知道的:
这里写图片描述

因为在if语句中会使用变量直接作为判断条件。

4.number

  1. 有两种,整数和浮点数
  2. NaN是number类型的重点,它是用来表示不规范的数值,为非数值的操作数,NaN值与任何值都不相等,包括本身
  3. 另外还有isNaN()函数是专门用来判断参数是否为数字的、
  4. Number(),parseInt(),parseFloat() 为比较常用的数值转换方法。第一个可以用于任何数据类型,后两个,则专门用于把字符串转化为数值。

5,String转换类型:
toString():不用传递参数
String()函数:可以转换任何一种类型为字符串

6.object:这是数据类型的最关键地方

  1. 实例化对象方法:使用new操作符,一种是通过字面量表示法
  2. Array(),Date()还有function()类型都是继承Object
  3. 什么是引用类型?
var obj=new Object();

引用对象有一个很有趣的东西,obj这个变量只是引用了对象,也就是说它只是这个存在于堆内存里面的对象的别称,本身是不会占用内存的。

但是,如果是

var obj=obj2;

如果是这样的话,相当于把obj2在内存中所指向的地址,赋给了obj,那样obj就可以直接访问obj2的地址下的对象

常见问题:null和undefined有什么区别?

经典面试题:
实现一个函数clone,可以对js的5种主要数据类型进行复制
• 考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚
• 考察点2:是否知道如何判断一个变量是什么类型的
• 考察点3:递归算法的设计
方法一:

Object.prototype.clone=function(){
    var o=this.constructor===Array?[]:{};
    for(var e in this){
     o[e]=typeof this[e] ==="object"?this[e].clone():this[e];
    }
    retuen o;
}

方法二:

//方法二:
  /**
     * 克隆一个对象
     * @param Obj
     * @returns
     */ 
    function clone(Obj) {   
        var buf;   
        if (Obj instanceof Array) {   
            buf = [];                    //创建一个空的数组 
            var i = Obj.length;   
            while (i--) {   
                buf[i] = clone(Obj[i]);   
            }   
            return buf;    
        }else if (Obj instanceof Object){   
            buf = {};                   //创建一个空对象 
            for (var k in Obj) {           //为这个对象添加新的属性 
                buf[k] = clone(Obj[k]);   
            }   
            return buf;   
        }else{                         //普通变量直接赋值
            return Obj;   
        }   
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿冰介

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值