• JS基础(1)


    ######2018-7-17
    ### 一 JS的来源
    第一个版本  ECMAScript 1 (简称 ES1) 1997
    第二个版本  ECMAScript 2 (简称 ES2) 1998
    第三个版本  ECMAScript 3 (简称 ES3) 1999
    第四个版本  ECMAScript 4 (简称 ES4) ...
    第五个版本 ECMAScript 5 (简称 ES5) 2009
    第六个版本  ECMAScript 2015 (简称 ES6) 2015
    第七个版本  ECMAScript 2016 (简称 ES7) 2016
    第八个版本 ECMAScript 2017 (简称 ES8) 2017


    ###二 JS基础
    /*
    多行注释
    多行注释
    多行注释
    多行注释
    */

    // 语句

    ``` JS
    var a = 1;
    // 语句块(代码块)
    if (true) {
        var a = 1;
        {
            var v = 1;
        }

    }
    ```


    #####标识符的取名规则
    1. 严格区分大小(大小写不一样)
    2. 由 _、$、数字、字母组成(不能以数字开头)
    3. 不能使用关键字和保留字

    1. 驼峰命名法  : phoneNumber
    2. 蛇形命名法  : phone_number


    ###三  变量
    (1)变量定义:可变化的量,用来储存数据的容器
    变量的生命(创建变量)
    1.声明未初始化

    var num ; ( ES5)
    let num ; (ES6)





    2. 声明并初始化

    var num = 10;   “=” 赋值符,将“=”右边的数据赋值给“=”左边
    let name = '张三';


    3. 连续声明(直接赋值)

    var a, b, c = 0;
    let e, f = 3, g;


    (2)变量声明的问题
    1. 变量重名
    如果是 var 声明的变量,后面的会覆盖前面的(程序不会报错)

    var num = 1;
    var num = 2;
    console.log(num);
    如果是 let 声明的变量,不允许重名(程序会报错)。

    let num = 1;
    let num = 2;(不允许重名)
    console.log(num);

    2. 遗漏声明
    直接访问一个未声明的变量,程序会报错。

    console.log(a);

    对一个未声明的变量进行赋值,会默认在全局创建该变量。

    a = 10;(不建议使用)
    console.log(a);

    3. 连续声明

    let a = 1, b = 1, c = 1;
    let a = b = c = 1;(不建议使用)
    console.log(a, b, c);

    ###四 变量的作用域
    变量作用域定义:是指变量有效的区域
    全局作用域、局部作用域
    在 ES5 中,针对 var 声明的变量,其局部作用域由函数划分。
    在 ES6 中,针对 let 声明的变量,其局部作用域由大括号划分。

    var a = 1;
    let b = 2;

    {
        let d = 4;
        console.log(d);
    }

    {
        let d = 5;
        console.log(d);
    }

    console.log(d);(
    四、变量提升
    一个未赋值的变量,它的默认值为 undefined。

    var a = 1 ;
    console.log(a);
    a = 1;

    变量提升:在代码正式执行之前,JS 引擎会先解析(只看不运行)所有的代码,
    并找到通过 var 声明的变量,将“变量的声明”提升到当前作用域的头部。




    function fn(){
        var a;
        console.log(a);
        a = 1;
    }
    fn();

    var 和 let 的区别:
    1. 变量重名:在同一作用域中,var 允许重名,后面覆盖前面。而 let 不允许重名。
    2. 作用域:var 的局部作用域通过函数划分,而let 的局部作作用域通过大括号划分。
    3. 变量提升:var 存在变量提升,let 不存在变量提升。

    function fn(){
        var a = b = c = 10;
    }
    fn();

    console.log(a);(只有a通过 var创建,b c 默认全局,所以这句会报错)
    console.log(b); (结果输出10 )
    console.log(c); (结果输出10 )
    常量:不变的量(ES6)不可修改

    const  num = 1 ;



    ###五 数据类型

    (1)数字 number

    let num = .9;
    let num = NaN;
    Not a Number (非数字)
    1. 任何涉及到 NaN 的操作,结果都是 NaN。
    2. NaN 跟任何值都不相等,包括自己。

    console.log(NaN == NaN);

    (2)字符串(带引号,英文状态单双皆可)string
    单引号可以嵌套双引号,双引号可以嵌套单引号
    同类型引号不可嵌套
    :在字符串里表示换行
    :在字符串里表示制表

    let str = "'1231SKFskdf 23'";
    console.log(str);

    (3)布尔 boolean

    true(真) false(假)

    (4)未定义 undefined

    undefined(当变量未赋值时)

    (5) 空 null

    null(连容器都没有)
    let num = null ;(可以用来释放内存)
    let num = undefined;
    console.log(undefined == null);(输出结果为true)
    console.log(typeof null);(查看数据类型)



    (6)symbol 唯一


    let a = NaN;
    console.log(typeof a);
    console.log(isNaN('hello'));   // 是不是  非数字





    (7)复杂数据类型
    对象:objct(也叫引用数据类型)




    一、字符串拼接符
    (ES5)用 + 号拼接

    let str1 = 'hello';
    let str2 = 'js';
    let str3 = str1 + ' ' + str2;
    console.log(str3);
    let name = '马冬梅';
    let age = 18;
    let gender = '女';
    let str = "我的名字叫" + name + ",今年" + age + "岁。性别" + gender + "。";

    // 模板字符串(ES6)

    let str2 = `我的名字叫${name},
    今年${1 + 10}岁,性别${gender}。`;
    console.log(str2);


    模板字符的特点   ${   }
    1. 支持换行
    2. 可以解析字符串内部代码

    二、算术运算符

    let a = 10;
    let b = 5;

    console.log(a + b);
    console.log(a - b);
    console.log(a * b);
    console.log(a / b);
    console.log(a % b);  ( 取模(求余)  )
    console.log(a ** b);   (求幂)(ES6)


    前置型:先自增(自减),再执行其他操作
    后置型:后自增(自减),先执行其他操作

    let x = 5;
    let y = x--;
    console.log(x, y);  (结果为4   5  )

    let x = 5;
    let y = x++ * x++;
    console.log(x, y);(结果为  7  30 )

    三、比较运算符

    let a = '5';
    let b = '6';
    console.log(a > b);
    console.log(a >= b);
    console.log(a < b);
    console.log(a <= b);

    console.log(a == b);  (   主要比较 值  是否相等相等    )
    console.log(a != b);
    console.log(a === b); ( 严格等:比较   值  和   数据类型   都相等   )
    console.log(a !== b); (严格不等:比较   值  和   数据类型   都不相等

    四、逻辑运算符
    或  ||:一真全真

    console.log(false || true);
    // 与  &&:一假全假

    console.log(false && true);
    // 非  !: 取反

    console.log(!true);


    ###六 赋值运算符

    let a = 1;
    let b = 2;
    let c = a + b;


    +=
    a = a + b;
    a += b;
    a = a - b;
    a -= b;


    -= ...
    *= ...
    /= ...
    %= ...以此类推



    ###七  三目运算符

    ?:   条件 ? 表达式1 : 表达式2
    条件为真,执行表达式1,条件为假,执行表达式2



    let age = 20;

    age > 18 ? console.log('已成年') : console.log('未成年');
    let a = 1 + 3 * 5;

  • 相关阅读:
    WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)
    【ASP.NET Core】自己编程来生成自签名的服务器证书
    WPF:DataGrid可过滤、多语言
    将python脚本打包为exe可执行文件
    C# WPF DATAGRID 分组(GROUP)
    皮肤样式备份
    wpf – 如何在UIElement.Margin上为绑定设置FallbackValue?
    Wpf虚拟屏幕键盘
    ubuntu docker 安装 redis
    fastapi 返回请求头信息
  • 原文地址:https://www.cnblogs.com/fen0309/p/9351988.html
Copyright © 2020-2023  润新知