zoukankan      html  css  js  c++  java
  • 复习JavaScript随手记

    数据类型

    基本类型

    1. string
    2. number
    3. boolean
    4. undefined

    number类型,包含整数浮点数

    NaN和自己都不相等,涉及NaN的计算结果都是NaN

    isNaN()函数用于判断一个数是不是NaN

    引用类型

    object类型

    function类型 继承自object

    object类型定义了prototype属性

    可以通过它动态给对象绑定方法和属性

    内置对象

    String

    封装了很多方法,如 split() replace(),indexof(),includes()

    Array

    JS中的数组,在数组中可以保持任何类型的数据,并且数组的长度会自动的增加

    创建数组对象:

    • 方式1:用这种方式创建数组的时候我们并没有指明数组元素的类型和数组对象的长度
      var arr = new Array();

    • 方式2:用这种方式创建数组的时候我们指明了数组对象的长度
      var arr = new Array(5);

    • 方式3:用这种方式创建数组的时候我们指明了数组对象的长度
      var arr = new Array("Hello", "World", 23, 5.6);

    • 方式4:
      var arr = ["Hello", "World", 23, 6.3, true, false, new Date()];

    Date

    常用方法

    > var d=new Date();
    undefined
    > d
    2019-01-26T11:13:49.912Z
    > d.getTime();
    1548501229912
    > d.toString();
    'Sat Jan 26 2019 19:13:49 GMT+0800 (GMT+08:00)'
    > d.toLocaleString();
    '2019-1-26 19:13:49'
    > 
    

    Math

    注意:JS中的Math类和Java中的Math类类似.都是用来执行某些算术操作的
    都是不能创建对象的.类似于Java中,通过类名.xxx,类名.xxx()调用属性和方法

        var pai = Math.PI;
        var num = Math.max(10, 30);
    

    Regexp

    正则表达式就是专门来处理String数据的.按照特定的规则,用正则元素指定一个有规则的模板
    (例如邮箱的规则),然后测试某个String是否符合这个规则.(也就是测试某个String是否符合邮箱的规则)

    使用方式:

    创建正则对象

    调用test()方法

    被测试字符串满足正则规则返回true

        // 测试参数string是否是有效的中文字符
        // JS中字符是采用UniCode编码的,每个国家的字符都在在UniCode编码的某个范围之内
        function checkChinaese(str) {
            var re = "[u4e00-u9fa5]"; // 中文的编码范围
            var regExp = new RegExp(re); // 创建正则表达式对象
            if (regExp.test(str)) {
                return true;
            } else {
                return false;
            }
        }
    

    创建正则对象的方式:

    1. var reg = new RegExp("^[hH]ello$");
    2. var reg = /^[hH]ello$/
    > var reg = /^[hH]ello$/
    undefined
    > reg.test("hello");
    true
    > reg.test("Hello");
    true
    > reg.test("Hello1");
    false
    > reg.test("Hffellasdfo1");
    false
    

    数据类型转换

    typeof()函数检查数据的类型

    js和python一样会自动将数据转换成boolean类型用于条件表达式

    转换规则: 0 NaN "" undefined null ->false

    底层实现是调用了Boolean()函数

    const PI = 3.14;
    
    if (PI){
        console.log("PI is true");
    }
    

    非数值类型转数值类型

    1. 可以使用Number()函数
    2. 使用parseInt()函数
    3. 使用parseFloat()函数

    常用parseInt()``parseFloat()将string转数值

    非string转string

    1. toString() (null和undefined不能用这个方法)
    2. String()函数,该函数可以将任何类型数据转换为String,包括null和undefined

    null,undefined,NaN的比较

    1. undefined与null是相等;

    2. NaN与任何值都不相等,与自己也不相等。

    变量声明

    var

    声明变量

    const

    声明常量,必须赋初始值,且不能修改.

    let

    声明局部变量

    运算符

    ==

    JS中的== 和java中的== 相同点

    1. 对于基本类型来说,是比较两个基本类型的值是否相等
    2. 对于引用类型来说,是比较两个引用的地址是否相同

    JS中的== 和java中的== 不同点

    • 下面这种写法在java中是错误的.但是在JS中是可以的.在js会吧两个不同类型的变量转换成相同的类型,然后再去比较
    • 转换的规则如下:当两个运算数的类型不同时:将他们转换成相同的类型,
      • 1)一个数字与一个字符串,字符串转换成数字之后,进行比较。
      • 2)true转换为1、false转换为0,进行比较。

    ===这是java没有的.具体的用法:

    • 只有两个变量的类型一致的时候,才会去比较.如果两个变量的类型不一致则直接返回false
    • === 既要比较变量的类型,又要比较变量的值

    delete

    delete运算符的使用,有三种形式

    1. 删除对象中的某个属性.但是不会影响其他的对象
    2. 删除数组中的某个元素,但是不会影响数组的长度和其他的数组元素
    3. 用在with语句中

    void指定要计算一个表达式但是不返回值

    href="javascript:void(0)" 不会重新刷新页面

    函数

    js没有函数重载

    声明方式1

    function add(x, y){
        return x +y;
    }
    //形参 不用var/let/const 也没有类型,不用有返回值类型,只能返回1个值
    

    声明方式2

    add = function (a, b) {
        return a +b;
    };
    

    流程控制

    switch

    swich语句的条件是任何类型的变量

    var s1 = "hello";
    switch(s1){
        case "hello":
            console.log("hello world");
            break;
        case "world":
            console.log("world");
            break;
        default:
            console.log("上述条件都不满足的情况");
            break;
    }
    

    for

    常规for循环

    for (let i = 0; i < 10; i++) {
        console.log("老婆,我想你");
    }
    

    for in (类似python中的for in 但是jsforin 只能取到Index)

    const array = [3, 6, 8, 9, "呵呵", false]
    
    for (let index in array) {
        console.log(array[index]);
    }
    

    while/do while/if和java一样

    面向对象

    1. 声明类
    2. 创建对象
    3. 调用对象的属性和方法
    function Boy(name, age) {
        this.name = name;
        this.age = age;
    
        this.sayHello = function (name) {
            return "Hello " + name + " !";
        }
    
        this.toString = function () {
            return "[name:" + this.name + ",age:" + this.age + "]";
        }
    }
    
    let boy = new Boy("小明", 12);
    console.log(boy.toString());
    console.log(boy.sayHello("Jack"));
    

    with语句,简化对象的访问,不用obj.xx.

    let boy = new Boy("小明", 12);
    
    with (boy) {
        console.log(name);
        sayHello("Rose");
        console.log(toString());
    }
    

    JSON

    eval()函数

    我们把一段有效的JS代码放到了一个String中
    eval()函数就可以解析并执行String中有效的js代码

    > var s2 = "console.log('hello js!')";
    undefined
    > eval(s2);
    hello js!
    undefined
    

    JSON定义语法

    JavaScript对象标记,可以简化自定义对象的使用过程,定义并实例化一个js对象
    JSON语法 : var 变量 = {
    属性: 属性值,
    属性: 属性值,
    属性: 属性值 // 注意:最后一个语句后面没有,
    };
    属性值 可以是 任何类型,(当然也可以是数组了)

    > var xx = {name:"jack",age:12}
    undefined
    > xx
    { name: 'jack', age: 12 }
    > xx.age;
    12
    > xx['age']
    12
    
    

    属性的访问方式:

    1. xx.属性名
    2. xx["属性名"]

    定义有方法的JSON对象

    function sayHi(name) {
        console.log("你好," + name + "!!");
    }
    
    var stu = {name: '张小三', age: 12, sayHello: sayHi}
    
    stu.sayHello("小明");
    

    定义复杂的JSNO对象,属性名可以用字符串,也可以不用.

     var per = {
                "name": "张三",
                "addr": {  // 地址的属性是另外一个JSON对象
                    "city": "北京",
                    "street": "大兴区",
                    "zipcode": "100012"
                },
                "aihao": ["抽烟", "喝酒", "烫头"] // 爱好属性的值是一个数组
            };
    

    使用JSON来传输数据

        // 下面这个string就是从服务器端返回的json格式的string
        var str = 'var user ={"name": "张三",age : 23,"address":"北京市大兴区"}';
    
        // 使用eval函数解析并执行这个从服务器端返回的string
        eval(str)
    
        // 访问对象的属性
        console.log("user.name=" + user.name + ",age=" + user.age + ",address=" + user.address);
    
  • 相关阅读:
    创建和销毁对象
    echarts折线图堆叠样式 图表只显示一类折线图
    web中跨页面的点击事件
    3DMAX学习笔记——Animate简单的动画
    3DMAX学习笔记——Rendering的时候模型太亮
    Unity3D学习笔记——让Cube沿着某个轴运动
    Unity3D学习笔记——Camera绕着物体旋转
    Unity3D学习笔记——Unity3D的窗口布局
    ZLXSC2015Day1题解
    浅谈同构类问题的骗分算法
  • 原文地址:https://www.cnblogs.com/endurance9/p/10324730.html
Copyright © 2011-2022 走看看