• JavaScript基础二


    一、流程控制

    1. if ... else

    var age = 20;
    if (age > 18) {
        console.log('ok')
    }else {
        console.log('back')
    }

     

    2.if ... else if ... else

    var age = 30;
    if (age < 18){
        console.log('未成年')
    }else if (age > 60){
        console.log('退休')
    }else {
        console.log('上班')
    }

     

    3.switch

    一定要加break,否则继续往下执行

    var day = 3;
    switch (day) {
        case 1:
            console.log('星期一');
            break;
        case 2:
            console.log('星期二');
            break;
        case 3:
            console.log('星期三');
            break;
        default :
            console.log('周末');
    }

     

    4.for循环

    ① for(var i=0;i<10;i++) {循环体}

    for (var i=0;i<10;i++){
        console.log(i)
    }

    ② 死循环

    for (;;){
        console.log(1)
    }

     

    5.while循环

    while (条件) {循环体中要修改条件}

    var n = 10;
    while (n >10) {
        console.log(n);
        n--
    }

     

    6.三元运算

    多用于赋值,对变量值做操作

    // 三元运算
    var x = 100;
    var y = 10;
    var a = x > y ? x:y

     

    二、函数

    1.普通函数

    function func(x,y) {
        return x+y
    }

    特点:① 多传参数、少传参数和不传参数都不会报错,没有传值相当于传了undefined

       ② 少传参数会返回NaN

          ③  返回值是多个时,不会报错,但默认返回最后一个

               ④  需要返回多个值时,把返回值放在数组中

     

    2.匿名函数:多用于和其他的函数/方法搭配使用,也用于回调函数中

    function (x,y) {
        return x+y
    }
    var foo = function (x,y) {
        return x+y
    };
    
    var ret1 = foo(10,20);
    console.log(ret1);

     

    3.ES6新特性,箭头函数

    箭头函数时匿名函数的简写

    var f = x , y => x+y
    
    等同于
    var f = function(x,y) {
        return x+y
    }

     

    3.立即执行函数:一页面使用两个JS文件,一个JS定义变量,另一个JS打印变量;解决方法:函数的局部变量在外部是不能使用的

    JS中没有模块的概念,多通过立即中子星函数实行变量的私有

    // 立即执行函数
    (function(a,b){
        console.log('自执行函数');
        console.log(x+y);
    })(111,222);

     

    4.函数中的argu传入参数的个数

    function add(a,b,c){
        console.log(a+b+c);
        console.log(arguments.length)
    }
    
    add(1,2,3,4,5,6)
    6
    6

     

    5.函数的全局变量和局部变量

    局部变量

    在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

    全局变量:

    在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

    变量生存周期:

    JavaScript变量的生命期从它们被声明的时间开始。

    局部变量会在函数运行以后被删除。

    全局变量会在页面关闭后被删除。

     

    6.作用域

    首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

     

    7.词法分析

    JavaScript中在调用函数的那一瞬间,会先进行词法分析。

    词法分析的过程:

    当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面:

    1:函数参数,如果有,则将此参数赋值给AO,且值为undefined。如果没有,则不做任何操作。
    2:函数局部变量,如果AO上有同名的值,则不做任何操作。如果没有,则将此变量赋值给AO,并且值为undefined。
    3:函数声明,如果AO上有,则会将AO上的对象覆盖。如果没有,则不做任何操作。

    函数内部无论是使用参数还是使用局部变量都到AO上找。

     

    三、内置对象和方法

    JavaScript中一切皆对象

    面向对象,ES5中没有类的概念。

    创建对象用new关键字,实例化对象。

    或者使用构造函数创建对象,首字母大写。

    // 创建新的对象
    var name = new String('xiaoming');
    // JS面向对象(构造方法)
    function Person(name) {
        this.name = name
    }
    
    var p1 = new Person('xiaobai');

    JavaScript中使用原型链的方法

    // 给对象统一的方法
    Person.prototype.dream = function () {
        console.log(this.name + 'good')
    };
    p1.dream();

    四、Date对象

    创建对象可传入参数:日期字符串、毫秒数

    // Date对象
    var today = new Date();
    //转化为字符串
    today.toLocaleString();
    Date对象的方法
    var d = new Date(); 
    //getDate()                 获取日
    //getDay ()                 获取星期
    //getMonth ()               获取月(0-11)
    //getFullYear ()            获取完整年份
    //getHours ()               获取小时
    //getMinutes ()             获取分钟
    //getSeconds ()             获取秒
    //getMilliseconds ()        获取毫秒
    //getTime ()                返回累计毫秒数(从1970/1/1午夜)

    五、JSON对象

    不用new,直接使用方法

    JSON.parse()     字符串 --> JS的数据类型

    JSON.stringify    JS的数据类型 --> 字符串

    var str1 = '{'name':'xiaoming'}';
    var obj1 = {"name":"xiaoming"};
    
    //JSON将字符串转化为对象
    var obj = JSON.parse(str1);
    
    //JSON将对象转化为字符串
    var str = JSON.stringify(obj1);

    六、RegExp对象

    正则表达式对象,两种创建方式

    ① new RegExp(正则表达式)

    // 检验手机号
    var s1 = '13812341234';
    
    // 创建正则表达式对象
    var r1 = new RegExp('^1[3-9][0-9]{9}$');
    
    // 验证判断,返回布尔值
    r1.test(s1)

    ② 简写正则表达式

    /正则表达式/ 

    // 检验手机号
    var s1 = '13812341234';
    
    // 简写正则表达式
    /^1[3-9][0-9]{9}$/.test(s1);

    注意:

    ① test不传值,相当于传了undefined,内部当做'undefined'处理

    ② JS的正则表达式里不能写空格

    ③ 两个匹配模式

      g:全局匹配,附带lastIndex属性,会记录下一次匹配的开始位置,一旦返回False则会将lastIndex清0

      i:忽略大小写模式

    七、Math对象

    不用new,直接使用方法

    相关方法:
    
    abs(x)      返回数的绝对值。
    exp(x)      返回 e 的指数。
    floor(x)    对数进行下舍入。
    log(x)      返回数的自然对数(底为e)。
    max(x,y)    返回 x 和 y 中的最高值。
    min(x,y)    返回 x 和 y 中的最低值。
    pow(x,y)    返回 x 的 y 次幂。
    random()    返回 0 ~ 1 之间的随机数。
    round(x)    把数四舍五入为最接近的整数。
    sin(x)      返回数的正弦。
    sqrt(x)     返回数的平方根。
    tan(x)      返回角的正切。
  • 相关阅读:
    工业网络的物理隔离与数据采集
    从勒索软件到工控系统网络安全
    数据结构导论之第五章图
    数据结构导论之第六章查找表
    数据结构导论之第七章排序
    数据结构导论之第三章(栈、队列、数组)
    第八章、网络安全基础
    第七章、无线与移动网络
    第六章、物理层
    第五章、数据链路层与局域网
  • 原文地址:https://www.cnblogs.com/st-st/p/9796132.html
Copyright © 2020-2023  润新知