A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、let和const;

let:用来声明变量,类似var,不过let声明变量只在代码块内有效(和Java、c#等后台语言声明变量一样)。



  •     for(let i=0;i<3;i++){



  •         console.log(i)



  •     }



  •     console.log(i);//会报错i未定义


使用var定义是不会报错,var定义,实际上只存在函数作用域和全局作用域(要么在方法里面的,要么就是全局的),而let是有代码块作用域的(大括号),

let不存在变量名提升,先使用,后声明,会报错;var声明会输出undefined。

会存在暂时性死区(就是不能在代码块中,使用let或const声明,在声明前使用了,会报错)

const:常量,不能重新声明修改;不过声明的是对象、数组等可以修改里面的值和属性



  • const a={name:"long",age:18}



  •     a.age=20



  •    console.log(a)







  •   const b=[1,2,3]



  •     b[0]=5



  •    console.log(b)


2、解构赋值

就是两边结构类似,按照类型解构获取值;



  • var [,name,] =["long","jack","Tom"]//左右结构相似



  • console.log(name)


3、字符串处理

模板字符串:



  • var name="jack";



  •     let str=`我的名字是${name}!`



  •     console.log(str)


获取字符串是否包含某人字符 indexOf():找到字符首次出现位置,没有返回-1;includes():返回true或false

4、参数默认值、不定参数、拓展参数
    默认参数:
    a)以前使用或赋默认值:function(value){var name=value||" 默认值"}
    b)es6在方法括号直接赋默认值function(value=" 默认值"){var name=value}
   不定参数:
    a)参数不固定:function  count(a,b,...rest){}:如果调用: count(1,2,3,4,5,6):其中的参数,a=1,b=2,rest=[3,4,5,6]
   拓展参数:
    a)组装数组:var people=['Wayou','John','Sherlock'];  var pere=[...people,"aaa","bbb"]  console.log(pere) //["Wayou", "John", "Sherlock", "aaa", "bbb"]

es5中使用arguments:



  •        //arguments对象(function中参数数组,可多个参数。模拟重载)



  •         function test() {



  •            var dd= arguments.callee;



  •            console.log(dd)



  •             for (var i = 0; i < arguments.length; i++) {



  •                 alert(arguments);







  •             }







  •         }



  •         test("name", "age")


5.对象相关:
    json对象:key和value相同简写:{name:name},写为{name}
     Object.assign() 对象浅复制;只能复制一层,想多层复制,不相互影响必须一层一层的复制。例如:
               var oba={a:1,b:{name:"long",age:19}}
                const obj=Object.assign({},oba)
                obj.b=Object.assign({},oba.b)

                obj.b.age=10;
               oba.b.name="dddd"
                console.log(oba)//{a:1,b:{name:"dddd",age:19}}
                console.log(obj)//{a:1,b:{name:"long",age:10}}

6、for of:输出的是值
    var a=["a","b"] ;for (let v of a){console.log(v)}

7、数组相关:

a)扩展运算符:var z=[1,2,3]
                function tes(a,b,c){
                    console.log(a+b+c)
                        }
                    tes(...z)
b)扩展运算用法:
        数组中最大值:var a=[22,33,11,21];  es5:Math.max.apply(null,a)  返回33;  es6:Math.max(...a)  返回33
        push函数:var a=[1,2,3];b=[5,6]: es5:Array.prototype.push.apply(a,b)//讲一个数组添加到另外一个数组
                        es6:a.push(...b)
        数组的克隆:var a=[1,2,3]: es5:采用的concat,数组的拼接,拼接一个空值:var b=a.concat();
                           es6:const a=[1,2,3]; const b=[...a];也可以拼接;const c=[11,22]  ; const d=[..a,...c]
                          (都是浅克隆,数组里面如果包含对象,也是指向同一个地址)
        与解构赋值结合:const [first, ...rest] = [1, 2, 3, 4, 5] ; first // 1  ;rest  // [2, 3, 4, 5]
                            const [first, ...rest] = [];first // undefined;  rest  // []
                            const [first, ...rest] = ["foo"];  first  // "foo"   rest   // []
        字符串:将字符串切割成数组
                          [...'hello']   结果:[ "h", "e", "l", "l", "o" ]



2 个回复

倒序浏览
回复 使用道具 举报
奈斯,很赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马