首页 > 编程语言 >Java登陆第三十二天——ES6(一)let、const、模板字符串、解构表达式、箭头函数

Java登陆第三十二天——ES6(一)let、const、模板字符串、解构表达式、箭头函数

时间:2024-03-08 18:12:25浏览次数:22  
标签:ES6 Java log 函数 解构 let console const

所谓ECMAScript6也就是JS6。这次更新带来了大量的新特性,使JS代码更简洁,更强大。

复习JS请走:JS入门

JS6文档请走:JS6菜鸟教程

ES6新增了let和const关键字,用作声明变量

let

相较于var,let声明的变量更规范。ES6更推荐使用let

  1. let不可重复声明

  2. let可以作为成员变量:(let遇见非函数的 {} 时,其作用是成员变量)

  3. let不可预解析:(见下栗)

  4. let声明的全局变量不会作为window的属性

<script>
    console.log("1.let不可重复声明");
    var a1 = 10;
    var a1 = 10;
    let b1 = 20;
    let b1 = 20;//Identifier 'b1' has already been declared

    console.log("2.let有作用域");
    {
        var a2 = 10;
        let b2 = 20;
    }
    console.log(a2);//10
    console.log(b2);//b2 is not defined

    console.log("3.let不可预解析");
    console.log(a3);//undefined
    var a3 = 10;

    console.log(b3);//Cannot access 'b3' before initialization
    let b3 = 20;

    console.log("4.let声明的全局变量不会作为window的属性");
    var a4 = 10;
    console.log(window.a4);//10
    let b4 = 20;
    console.log(window.b4);//undefined
</script>

const

常量,类似Java中的final,常量的变量名建议大写

  1. const必须有初始值

  2. const值不可更改

  3. const有作用域:(同let,非函数{}时作为成员变量)

  4. const声明对象其地址值不可更改:(对象内部属性可改)

<script>
    console.log("1.const必须有初始值");
    const PI;//Missing initializer in const
    const PI=3.14;

    console.log("2.const值不可更改");
    const SEX="男";
    SEX="女";//Assignment to constant variable.


    console.log("3.const有作用域");
    {
        const A="阿斯顿";
    }
    console.log(A);// A is not defined

    console.log("4.const声明对象其地址值不可更改");
    const ARR=[1,2,3];
    console.log("修改前"+ARR);//修改前1,2,3
    ARR.push(4);
    console.log("修改后"+ARR);//修改后1,2,3,4
</script>

模板字符串

增强版的字符串而已,使用反引号``。

  1. 无需+号拼接的换行

  2. 支持${XXX}输出变量或拼接变量

<script>
    console.log("1.无需+号拼接的换行");
    let Str1 =//使用+号拼接的 换行字符串
        '<ul>'+
        '<li>床板</li>'+
        '<li>凳子</li>'+
        '<li>垃圾桶</li>'+
        '</ul>'

    let Str2 =//使用模板字符串 反引号` `
        `
        <ul>
        <li>床板</li>
        <li>凳子</li>
        <li>垃圾桶</li>
        </ul>
        `
    console.log("2.支持${XXX}输出变量或拼接变量");
    let temp="鼠标";
    let Str3 =//使用模板字符串 反引号` `
        `
        <ul>
        <li>床板</li>
        <li>凳子</li>
        <li>${temp}</li>
        </ul>
        `
    console.log(Str3);
/*

        <ul>
        <li>床板</li>
        <li>凳子</li>
        <li>鼠标</li>
        </ul>

 */
</script>

注意以上是字符串!!!标签不会被解析

解构表达式

解构赋值使用花括号 {} 表示对象,方括号 [] 表示数组。

解构赋值菜鸟教程

  1. 数组解构赋值

  2. 对象解构赋值

  3. 函数解构赋值

<script>
        console.log("1.数组解构赋值");
        let [a, b, c] = [1, 2, 3];//1赋值给变量a 2赋值给变量b
        console.log(a);//1
        console.log(b);//2
        console.log(c);//3

        let [x1, y1, z1] = [10, 20];//按照上述逻辑 打印z1应该是undefined
        //解构赋值允许手动设置 默认值
        let [x2, y2, z2 = 30] = [10, 20];
        console.log(z2);

        console.log("2.对象解构赋值");
        //定义对象person
        let person = {name: "小明", age: 18}
        //变量名必须和属性名相同,本质是初始化变量的值,为对象中同名属性的值
        let {name, age} = person;//等价于 let name = person.name
        console.log(name);//小明
        console.log(age);//18

        console.log("3.函数解构赋值");
        //切记切记 花括号 {} 表示对象,方括号 [] 表示数组,所以传参是数组。
        function f([max, min]) {
            return max > min ? max : min;
        }
        console.log( f([2,1]) );//2
</script>

箭头函数

和Java中的lambda不能说一样,简直就是一样。

//Java中lambda
()->{};

//JS中箭头函数
()=>{};
  1. 正常函数声明

  2. 箭头函数声明

  3. 箭头函数省略规则

  4. 箭头函数this关键字:(重要)

    <script>
        console.log("1.正常函数声明");
        //正常的函数声明
        let fun = function () {
            console.log("hello")
        }
        fun();//正常的调用函数

        let fun2 = function (x) {
            return x;
        }
        fun2(1);

        console.log("2.箭头函数声明");
        let fun3 = (x) => {return x};

        console.log("3.箭头函数省略规则");
        //1.一个传参省略(),多个传参或者无传参不可以!
        let fun3_1 = x => {return x};

        //2.方法体中只有一句,且不为return时,可以省略花括号{}
        let fun3_2 = x => console.log(x);
        let fun3_3 = x => return x;//报错 'return' outside function definition

        //3.方法体中有且仅有一句return,可以省略return和花括号{}
        let fun3_4 = x => x+1;
    </script>

箭头函数this关键字

    <script>
        console.log("4.箭头函数this关键字");
        //在JS中,this关键字通常用指向,函数所在的对象。(JS可以把函数作为对象的属性)
        let p1 = {
            name: "张三",
            say: function () {
                console.log("说话" + this)//这里的this指向对象p1
            },
            age: 18
        };
        p1.say();

        //但在箭头函数中,this指向的是,定义箭头函数时所处的上下文对象
        let p2 = {
            name: "李四",
            tell: () => {
                console.log(this)//这里的this指向上下文对象,也就是window对象
            }
        }
        p2.tell();

        //再次理解上下文
        function xy() {
            this.i = 0;//这里的this指向,函数所在的对象window

            setTimeout(() => {//window的定时器方法setTimeout(code, milliseconds)
                this.i++;//箭头函数的this指向上下文 i
                console.log(this.i);
            }, 1000)
        }
        xy();//1秒后i+1 打印1


    </script>

image
上下文对象直白的说就是,外层对象

标签:ES6,Java,log,函数,解构,let,console,const
From: https://www.cnblogs.com/rowbed/p/18061443

相关文章

  • 熟悉又陌生的JavaWeb 第3天
    传送门Servlet编程第2天的开头部分已经看过Servlet这里再介绍一下注解方式,可以不用配置web.xml使用注解的前提是web.xml的version是4.0(3.0以上应该就行)@WebServlet(name="MyNewServlet",value="/MyNewServlet")publicclassMyNewServletextendsHttpServlet{......
  • JAVA基础--方法
    方法的定义(函数)注意:Java都是值传递语法:修饰符返回值类型方法名(参数类型参数名){...方法体...return返回值;}例子:定义一个求两数最大值的方法publicclassDemo01{publicstaticvoidmain(String[]args){intmax=Max(10,20......
  • JAVA基础--命令行传参
    命令行传参有时希望运行一个程序时再传递给它消息,这需要靠传递命令行参数给main()函数来实现编写以下代码publicclassDemo02{publicstaticvoidmain(String[]args){//args.length数组长度for(inti=0;i<args.length;i++){......
  • JavaScript 打包器esbuild的基础使用
    esbuild是一种类似于webpack的极速JavaScript打包器。esbuild项目主要目标是:开辟一个构建工具性能的新时代,创建一个易用的现代打包器。先安装esbuildnpmiesbuild-g-g代表全局范围检查esbuild的版本esbuild--version命令行构建esbuildsrc\app.jsx--bundle--outfi......
  • php+java加密对接算法
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/322请求示例:{"appKey":"demo","nonce":"12345","sign":"04a8ba0a19ffc491716131a542729a9c250d84ce4211889a15f920ce974cf23......
  • Java学习笔记——第九天
    综合项目:ATM项目需求拥有登陆界面,在登陆界面有开户、功能和退出系统功能。在开户时,要求输入姓名、性别、密码和每次取款限额,输入密码时要再输入一次以确认密码输入正确,之后自动生成不重复的8位数字卡号。在登陆时,若系统中没有账户,要能提示用户先去开户;若输入的账户不存在或密......
  • java 判断list对象中的一个属性值是否相同
    要判断Java中List对象的某个属性值是否全部相同,可以使用Java8的流(Stream)API来简化操作。以下是一个示例代码,演示如何检查一个对象列表中的某个属性是否全部相同:javaimportjava.util.List;importjava.util.Objects;publicclassListUtils{publicstatic<T>booleanal......
  • java 日期去掉T
    importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassMain{publicstaticvoidmain(String[]args)throwsParseException{StringdateStr="2021-09-30T15:46:37";//原始日期字符串......
  • 【Java】Integer.parseInt()和Integer.valueOf()的区别
    1.Integer.parseInt()和Integer.valueOf()的区别区别1Integer.parseInt()将字符串转换为基本类型int,返回一个int类型值。inti=Integer.parseInt(Strings);Integer.valueOf()将字符串转换为Integer对象,返回一个Integer对象。Integeri=Integer.valueOf(Strings);......
  • Java知识拓展
    publicclasstest3{publicstaticvoidmain(String[]args){//进制二进制0b十进制八进制0十六进制0xinti=10;inti2=010;inti3=0x10;System.out.println(i);System.out.println(i2);System.out.println(i3);System.out.println("=======......