JavaScript知识点归纳

1、undefined和null的定义与区别

(1)定义

undefined:是所有没有赋值变量的默认值,自动赋值。

null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。

(2)区别

        ①类型不同

    <script>
        console.log(typeof(undefined));//结果为undefined
        console.log(typeof(null));//结果为object
    </script>

        null的返回结果为object是由于历史原因导致的:JavaScript语言的第一版把所有值都设计成32位,其中最低的3位用来表述数据类型,object对应的值是000。当时,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),完全没考虑null,只把它当作object的一种特殊值,32位全部为0。这是typeof (null)返回object的根本原因。

        ②转换为数值类型的时候,返回值不一样

    <script>
        console.log(Number(undefined));//结果为NaN
        console.log(Number(null));//结果为0
    </script>

        NaN意思是:不是一个数,由于undefined表示未定义,所以返回值为NaN。null则会强制转换为0。

        ③转为布尔类型的时候,值相等,类型不同

    <script>
        console.log(undefined==null);//结果为true
        console.log(undefined===null);//结果为false
    </script>

        转换为布尔类型中:代表空,否定的值会被转换为false。==:是值相等,===:是值和类型都相等。由于undefined与null都为false,所以==值为true,但是它们类型不同,所以===是false。

2、new关键字的作用

        (1)在构造函数代码开始执行之前,创建一个空对象;
        (2) 修改this的指向,把this指向创建出来的空对象;
        (3) 执行函数的代码;
        (4)在函数完成之后,返回this---即创建出来的对象。

3、call()和apply()作用与区别

        (1)call()和apply()的作用:改变this指向。

        (2)call()和apply()的区别:接收参数的方式不同。      

        apply()方法接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。

        call()方法不一定接受两个参数,第一个参数也是函数运行的作用域(this),但是传递给函数的参数必须列举出来。

    <script>
        var func1 = function(arg1, arg2){};//定义函数func1 
        func1.call(this, arg1, arg2);
        func1.apply(this, [arg1, arg2]);
    </script>

4、Math对象

         (1)定义:Math对象不是构造函数,不需要使用new关键字调用。

          (2)相关使用

    <script>
        console.log(Math.PI)//圆周率
        console.log(Math.max(1,2,3))//3,取最大值
        console.log(Math.min(1,2,3))//1,取最小值
        console.log(Math.max(1,2,"a"))//NaN
        console.log(Math.max())//-Infinity
        console.log(Math.min())//Infinity

        console.log(Math.abs(1))//1,取绝对值
        console.log(Math.abs(-1))//1,取绝对值
        console.log(Math.abs("-1"))//1,取绝对值
        console.log(Math.abs("a"))//NaN

        console.log(Math.floor(1.1))//1,向下取整
        console.log(Math.floor(1.9))//1,向下取整

        console.log(Math.ceil(1.1))//2,向上取整
        console.log(Math.ceil(1.9))//2,向上取整

        console.log(Math.round(1.1))//1,四舍五入
        console.log(Math.round(1.5))//2,四舍五入
        console.log(Math.round(-1.1))//-1,四舍五入
        console.log(Math.round(-1.5))//-1 特殊值
        console.log(Math.round(-1.6))//-2,四舍五入

        console.log(Math.random());//随机返回一个0~1之间的小数(不包括0和1)
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值