• JavaScript(一)基本语法概念


    异常

    Javascript通过try{}catch(e){}finally{}来捕获异常,也可以痛过throw关键字来抛出自定义异常。

    function fun1(a){
        try{
            if(a > 3){
                console.log('a === ' + a);
            }else{
                throw 'a值不被允许';
            }
        }catch(err){
            //非自定义异常需要用err.message
            console.log('err====:' + err);
        }finally{
            console.log('运行结束========');
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    typeof

    可以使用typeof操作符来检测变量的数据类型

    typeof 'zqq'; //返回string
    typeof 100.01; //返回number
    typeof true; //返回boolean
    typeof [1,2]; //返沪object
    typeof {name:'zqq',age:'18'}; //返回object
    
    • 1
    • 2
    • 3
    • 4
    • 5
    null和undefined

    null表示空对象引用,var a = null,类型为object。undefined是没有设置值的变量var a;,类型为undefined。

    var a;
    var b = null;
    console.log(a); //undefined
    console.log(b); //null
    console.log(typeof a); //undefined
    console.log(typeof b); //object
    console.log(a===b); // false
    console.log(a==b); //true 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    数据类型

    • javascript数据类型
      1. string
      2. number
      3. boolean
      4. object
      5. function
      6. symbol
    • 3个对象类型
      1. Object
      2. Date
      3. Array
    • 不包含任何值的数据类型
      1. null
      2. undefined

    可以使用typeof操作符来查看javascript变量的数据类型

    constructor属性

    constructor属性返回javascript变量的构造函数

    'zqq'.constructor; //返回函数String(){[native code]}
    ['a','b','c'].constructor; //返回函数Array(){[native code]}
    
    • 1
    • 2

    正则表达式

    正则表达式是由一个字符序列形成的搜索模式,当做文本搜索时,可以用搜索模式来描述要查询的内容。正则表达式可用于所有文本搜索和文本替换操作。
    语法:/正则表达式/修饰符(可选)
    javascript中正则表达式通常用于两个方法:search()replace()
    search()用于检索匹配的字符串,并返回起始位置。不存在返回-1。
    replace()用于替换字符串

    //search方法
    var str = 'hello world';
    var n = str.search(/world/i);
    console.log(n); //输出解构为6,/world/i,i表示不区分大小写
    
    • 1
    • 2
    • 3
    • 4
    var str = 'hello world';
    str = str.replace(/World/i,'zqq');
    console.log(str); //正则体会world,输出为hello zqq
    
    //替换全部,/g
    var repstr = 'aa cc dd aa';
    console.log(repstr.replace(/aa/g,'zq')s);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    test方法
    test()方法可以检测字符串是否匹配正则表达式,匹配返回true不匹配返回false

    //校验字符串是否包含字母a-z
    var re = /a-z/;
    console.log(re.test('123a456')); // true
    console.log(/a-z/.test('123e456')); //true
    
    • 1
    • 2
    • 3
    • 4

    exec方法
    exec()方法是一个正则表达式方法,用于检索字符串中正则表达式的匹配,返回的是个数组,如果未匹配到则返回null。

    var str = '123 a zqq 22 wq';
    var r = /a/.exec(str);
    console.log(r);
    
    • 1
    • 2
    • 3

    声明提升

    JavaScript中,函数和变量的声明都将被提升到函数的最顶部。变量可以先使用再声明。JavaScript只有声明变量会提升,初始化不会。通常在每个变量使用前声明变量。

    //先使用变量
    a = 'hello world';
    console.log(a);
    //后声明变量a
    var a;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    this关键字

    面向对象语言中this是表示当前对象的阴影,在JavaScript中this不是固定不变的,会随着执行环境的改变而改变
    不同环境下this关键字的意思

    1. 在方法中,this表示该方法所属对象
    2. 单独使用,this表示全局对象
    3. 在函数中,this表示全局对象(严格模式下,this为undefined)
    4. 在事件中,this表示接收事件的元素

    方法中this

    //在方法中,this指向调用他所在方法的对象
    var person = {
        name:'zqq',
        age:18,
        say:function(){
            console.log(this.name +' '+ this.age);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    单独使用this

    //单独使用this,指向全局对象,在浏览器中,window就是全局对象[object window]
    var a = this;
    
    • 1
    • 2

    let和const

    let声明的变量只在let所在代码块内有效。const声明的是一个只读的常量,一旦声明就不能改变。

    JSON

    JSON是用于存储和传输数据的格式,通常用于互联网传递数据,是一种轻量级的数据交换格式。JSON格式在语法上与创建JavaScript对象代码是相同的,所有可以很轻松的将JSON数据转换为JavaScript对象。
    JSON字符串转换为JavaScript对象

    //定义json字符串
    var jsonstr = {
        'name':'zqq',
        'age':18,
        'sex':'男'
    }
    //通过JSON.parese()方法,将json字符串转为javascript对象
    var obj = JSON.parse(jsonstr);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    JavaScript对象转为JSON字符串

    //创建javascript对象
    var obj = new Object();
    obj.name = 'zqq';
    obj.age = 18;
    //使用JSON.stringify()方法,将javascript对象转为json字符串
    var jsonstr = JSON.stringify(obj);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    void

    void是JavaScript中非常重要的关键字,该操作符指定要计算一个表达式但不返回值。

    //点击,计算结果为0,没任何反应
    <a href="javascript:void(0)">点击不会有任何反应a>
    //点击提示
    <a href="javascript:void(alert('Hello World'))">点击弹窗a>
    //a的结果为undefined
    var a,b,c;
    a = void(b = 2,c = 1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    href="*"与href=“javascript:void(0)”
    href="#"包含一个位置信息,会阻止跳转,但是url结尾会多个#。href="javascript:void(0)"仅仅表示死链接,阻止跳转,url不会发生任何变化。

    异步编程

    JavaScript中的异步操作函数往往通过回调函数来实现一步任务的结果处理。

    //定义一个回调函数
    function fun1(){
        console.log('回调函数被执行========');
    }
    //2秒后执行回调函数fun1,setTimeout函数会在子线程中等待指定时间,单位毫秒
    setTimeout(fun1,2000);
    //匿名函数
    setTimeout(function(){
        console.log('匿名函数被执行======');
    },2000);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    异步AJAX
    除了setTimeout函数以外,异步回调广泛应用于AJAX编程

  • 相关阅读:
    Android车载开发小结之sensor,carmanager,carservice串接
    Android源码——Rect源码解析
    StreamLake“披荆斩棘”,消费到企业,快手进军PaaS能否一帆风顺
    奇安信 测试|测试开发 面试真题|面经 汇总
    2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Python)-C卷D卷-100分
    noetic 怎么下载robotiq_modbus_tcp 从而使用robotiq二指夹爪
    同一个接口时快时慢。一次慢的,三四次是快的。怎么回事?
    spring boot 3 + spring cloud sleuth 无法注入Tracer问题
    从零开始学习JavaScript:轻松掌握编程语言的核心技能①
    在Ubuntu20.04安装StarRocks On Docker并在DataGrip配置JDBC协议连接容器内StarRocks2.3.2
  • 原文地址:https://blog.csdn.net/zhaoqingquanajax/article/details/128139519