javaScript变量和内置对象

1、变量
    a、变量提升
    
        javascript引擎的工作方式,先解析代码,获取所有被声明的变量,然后再一行一行的运行,
        造成的结果就是所有的变量的声明语句,都会被提升到代码的头部,(这种读取变量的机制就是变量提升)
        console.log(num)  //undefined
        var num = 1
        上面的代码在Javascript就是下面这种代码机构
        var num;
        console.log(num)
        num = 1;
        注意:
            只对var 声明的有效
    
    b、变量作用域
    
        console.log(num)
        var num = 1  //undefined
        console.log(num)
        num = 1         //error
        var声明的变量为局部变量
        局部变量仅在其所在的函数范围内生效,变量生效的范围被称为变量作用域
        而变量如果不适用var来声明,则表示变量在整个文件内生效,(全局变量)
    
    c、一等公民
    
        在其他语言中,函数都作为一个二等公民存在,只能用语言的关键字声明一个函数然后调用它,
        如果需要把函数作为参数传递给另一个函数,或是赋值给一个本地变量,又或是作为返回值,
        就需要指针、代理等特殊的方式周折一番
        
        但是 在javascript世界中函数却是一等公民,他不仅拥有一切传统函数的使用方式(声明和调用)、
        而且可以做到像简单值一样赋值,传参、返回,这样的函数也称之为第一级函数或者一等公民
        var a = function f() {
                console.log("wocao")
            }
        
            function f1(a) {
                a();
            }
            f1(a)
    d、函数名提升
    
        javascript引擎将函数名视同变量名,所以采用function命令声明函数时,
        整个函数会像变量声明一样,被提升到代码头部
        注意:
            只有function声明的函数会发生函数名提升,二如果通过赋值语句写的函数则不会
    e、**函数参数的默认值
        
        function func(num){
           num = num || 1; num默认值为1
           return num
        }
        func() //1
        这种写法会对函数参数num进行一次布尔运算,只有为true时,才会返回num。
        避免了因为忘写参数而导致的函数调用失败问题
        **** 但是出了undefined以外、0、空字符、null等的布尔值也是false,
2、内存

    a、值传递和地址传递
        原始数据类型(数值、字符串、布尔值)的内容传递方式是值传递
            传递是具体的数值
        而复合数据类型(数组、对象、其他函数)的内容传递是地址传递
            传递的是具体的内存地址
    
    注意:
        值传递不会对原内容产生改变,而地址传递能够改变原数据
    b、函数的同名参数
        如果函数有同名的参数,则取最后出现的那个参数值
        function f(num,num) {
                console.log(num)
            }
            f(1,2)//2
        如果函数没有提供第二个参数num的取值就变成了undefined
            function f2(num,num) {
                console.log(num)
        
            }
            f2(1)//undefined
        注意:
            尽量不要写同名参数,而且定义函数的时候写了几个参数,
            在调用的时候尽量保证和定义时一致
    c、**arguments对象
        由于javascript允许函数有不定数目的参数,所以我们需要一种机制来在函数体内部读取所有参数
        arguments对象包含了函数,【运行时】的所有参数
        arguments[0]就是函数的第一个参数arguments[1]就是第二个,以此类推,(这个对象只有在【函数体内部】才可以使用)
        var func =function(one) {
            console.log(arguments[0])
            console.log(arguments[1])
            console.log(arguments[2])

        }
       func(1,2,3)
    尽管在函数被声明的时候并没有多个参数,但是在函数运行的时候有三个参数,
    因此arguments对象便能够获取到这三个参数
    arguments对象出了可以读取参数,还可以进行赋值
    arguments[2] = 2;
    arguments[3] =3;
    console.log(arguments[2] + arguments[3])
    
    d、eval函数
        eval函数可计算某个字符串,并执行其中的javascript代码,
        (eval函数的作用是,将字符串当做语句执行)
        eval(string)
        该方法只接受【原始字符串】作为参数,如果string参数不是原始字符串
        那么该方法将不作任何改变的返回,因此请不要为eval函数传递string对象来作为参数
        eval('var num=100')
        console.log(num)
        
        注意:
            如果eval函数在使用的过程中发生了非法调用或者传入参数出错,则会抛出异常
    e、instanceof类型检测(数组是一种特殊的对象)
        用来检测是否对属于某个数据类型(仅对于复合数据类型)
        console.log(arr instanceof Object)

3、Math对象属性

    Math对象是javascript的内置对象,提供一系列数学常数和数学方法,
    该对象不是构造函数,所以不能生成实例,所有的属性和方法都必须在Math对象本身调用
    
    a、Math对象的属性表示只读的数学常数
        Math.E      常数e
        Math.LN2    2的自然对数
        Math.LN10   10的自然对数
        Math.LOG2E  以2为底的e的对数
        Math.LOG10E 以10为底的e的自然对数
        Math.PI     常数pi
        Math.SQRT1_2 0.5的平方根
        Math.SQRT2      2的平方根
    
    b、Math对象的方法
        Math.round():四舍五入
        当参数为正数时,正常的四舍五入标准,小于0.5取0,大于0.5取1
        当参数为负数时,向下取整标准,小于-0.5取-0,大于0.5取-1
            Math.round(0.1) //0
            Math.round(0.5) //1
            Math.round(-1.1) //-1
            Math.round(-1.6) //-2
        
        Math.floor()返回小于参数值的最大整数(向下取整)
            Math.floor(3.9) //3
            Math.floor(-3.2) //-4
        Math.ceil()返回大于参数值的最小整数(向上取整)
            Math.ceil(3.2) //4
            Math.ceil(-3.9) //-3
        Math.abs()返回参数的绝对值
            Math.abs(1) //1
            Math.abs(-1) //1
        Math.max()返回参数的最大值
            Math.max(1,5,11)
        Math.min()返回参数的最小值
            Math.min(1,5,11)
        Math.pow()返回第一个参数为底数,第二个参数为幂的指数值
            Math.pow(2,2)       //4
            Math.pow(2,3)       //8
        Math.sqrt()返回参数的值的平方根,如果是负值为NaN
            Math.sqrt(4) //2
            Math.sqrt(-4)   //NaN
            
        Math.log()返回以e为底的自然对数值
             Math.log(Math.E) //1
             Math.log(10)
        Math.exp()返回常数e的参数次方
             Math.exp(1)
             Math.exp(3)
6、Math随机生成

    Math.random()   返回0-1之间的一个伪随机数,可能等于0但是一定小于1
    Math.random().toFixed(2)  //保留小数点后两位
    //    随机生成验证码
            function getRandomStr(length) {
                var characterDic = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789-_";
                var finalStr = "";
                for (var i =0;i

页面更新:2024-05-14

标签:变量   平方根   对象   对数   常数   赋值   整数   字符串   函数   声明   参数   日期   代码   时间   方法   科技

1 2 3 4 5

上滑加载更多 ↓
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top