ES6兼容了ES5,ES6之后是按年份发了,现在的网页没有JS基本上跑不了
语句块的作用就是让JS有一个语句块,CSS和JS都可以压缩,把中间的空白字符去掉,去掉以后,整个JS和CSS只有一行,这一行很长
ES6中有一个新概念,只要被大括号括起来就是一个块作用域
这些都是块作用域
运行hello,a的作用域也不是全局的,是不可见的,因为函数作用域很强
**b依然是不可见,let 作用域是块作用域,var定义的是函数和全局作用域,写在函数就是函数作用域,写在顶层就是顶层作用域 **
c是全局作用域
这个相当于赋值即定义,隐式申明,一旦定义就是全局的,如果是ES5建议写var,ES6建议let
d不行,不能突破外面的块
let新语法,不允许对同一个变量let两次
内部是内部,外部是外部
e可以访问,var定义是在块里,但是只有let定义才认块,这个var还是老语法,要么全局要么函数
全局变量少用
let在同一作用域内,不要let两次,外部对内部可见,内部对外部不可见
流程控制
有些人喜欢这么写
c语言过来的人喜欢这么写
if分支,走分支只能走一个
shell脚本是倒过来写,if fi
这里注意要加大括号,否则只认上面一句,下面一句正常执行
全部等效false
空对象,NaN跟自己也不相等
后面的大括号不是字典,是object,a[i]是数组array类型,一个实例
除了这两个,其他可以看成等效false,对象都等于true
其他可以看做0
switch(测试的东西)
给0试试
switch,最大的问题,有穿透效果。 1,依次往下执行
从2开始往下打印
3
加上break就可以避免,一般情况下都需要带上break
这样使用穿透效果,相当于就是case1 或者2
换做if的等效就是这么写的
没有break有穿透效果
swicth…case都可以改造成if else
循环只有一句,可以把括号省略
这叫死循环
加了分号代表意思变了,循环里是空语句,下面语句执行一次
正好迭代次数一致,可以这么做,有的时候是巧合可以这么做
逗号表达式,依次从左向右执行
可以改写成while循环,但是在python里一般是while True,python的for循环不能成这样
逗号表达式的值最特殊,等于最后一一个表达式求出的值
前两个效率比较高,但是4个的结果是一样的
F9可以停止执行
这就是do while
for in语法跟python不太一样,python迭代是索引,这里迭代是元素
所以三种方式c风格是控制索引的方式,也可以for循环遍历一个容器,只要用的容器就是数组
可以把对象当数组使用
for循环现在有三种
1.c风格的,玩数组索引的,操作对象
2.in可以操作对象属性,对于数组来讲,对象就是它的索引,还有个属性是length,可以用in操作来判断
for in只能迭代索引,下面可以通过索引访问就像数组一样,对于对象来讲,也是可以for in,迭代出来是对象的属性,通过属性像数组一样进行访问。
for of只能迭代数组的值,其他的不支持迭代
do while,先做动作后判断
打印9-0
判断的时候是9,进去就是10了
数组的遍历返回的是索引
数组的遍历返回的是元素
c风格玩的是索引
查看有多大差异
下面是三个类型是number
第一个是遍历的索引当属性来用,下面的是数字,因为,数字是你自己定义的,in操作得到的都是string