动态类型的语言给我最大的感觉就是混乱,虽然有很多酷炫的语法糖,但感觉实际用起来会有很多bug。
直接就按照ES6的特性来吧,反正没什么不好
1.变量统统为var,函数也是变量。
2.不区分整数浮点数。
3.判断相等用===
4.初始化数组 var arr=[1,2,3]; var arr= new Array()数组可以装任何变量
5.对象初始化 var person={
name : "sb",age : 20,tags["dalao",5], eat : function(){alert("饿");}
}
注意这里属性和值用 :分隔,每个属性用,分隔
6.控制台输出 console.log()
7.一个变量不加var声明,自动变为全局。
解决方法:'use strict';
8.字符串不可变!可用单引号或双引号。多行字符串,用反引号
9.字符串拼接,用+或者使用模板字符串 `你好,我叫${name}`
10.获取字符串长度 length ,转大写 toUpperCase() ,转小写toLowerCase(),字串 substring(),索引 indexOf()
11.数组索引其实也是字符串。其实是个arraylist!长度可变!
获取索引indexOf() 切片slice() 末尾加元素push() 删去末尾元素pop()
头部加元素shift() 头部删除元素unshift() sort()排序 reverse()反转
spice(index,num,var1,var2.....)将从index开始的num个元素替换为var1,var2........
concat()数组拼接,返回新数组
join()用指定字符串连接数组各元素,返回新字符串
12。对象
用 .或者[]访问属性 []内为字符串形式
新增属性直接 obj.pro= ;
删除属性 delte obj.pro;
判断有没有该属性 "pro" in obj
判断都有属性 obj.hasOwnProperty()
13.循环
新增 for (var x of obj)循环,类似于for ( : )
还有一种forEach的神奇方法,不过用了回调,,没懂
14.map 可以使用二维数组初始化,set使用一维数组初始化。(map和set中的key可以不为字符串)
基本方法 get() set() has() delete()
16。函数 也是变量!!!两种方式初始化
function f(x) = {};
var f = function(x){};
auguments变量,自带,指向所有形参
rest,接收剩余形参,书写方法function(a,b,...rest)和Java类似
17.全局作用域,不在函数体内定义的变量自动绑定到唯一指定全局变量window下,成为其一属性。
18.命名空间,为避免冲突,把全局变量绑定到自定义的全局对象中。
19.块级作用域。var声明的变量整个函数内可用,若想指定块内 的变量,使用let进行声明
20.常量用 const声明
21.解构赋值 用[x,y,z]=[1,2,3]的形式进行批量赋值,可以使用默认值。
对属性赋值 {pro1,pro2,pro3} = obj;
若使用变量名与属性名不一致 使用 pro:var进行赋值。
*若发生报错,把该解构赋值语句用小括号包围起来
感觉后面的坑好多。。玩不动了
直接跳浏览器操作吧还是