加减乘除,取模和python一样,现在1/2是自然除法(不跟java,c一样是整数除法),1/0不抛出异常,因为正负无穷。
parseInt向下取整,floor,ceil是向上取整,python的round是四舍6入5取偶,但是在这里就是普通的4舍5入
i++先用后+,++i,先自增,再用
++这种属于单目运算符,+属于双目运算符,单目优先级高于双目
分析过程,需要把单目运算符和双目运算符的优先级结合起来
单目运算符优先级高于双目运算符,
+代表双目,++代表单目
比较运算符
字符串,第一个数字4是大于3的
比较的时候尽量使用同种类型,且强制类型转换
推荐使用三等
建议比较采用三等的方式
三元运算符,有三个操作数
逗号的优先级比等号还低,分成三段,最后一段是三元表达式
这个东西是python没有的,叫逗号表达式,也就是这个是被逗号分隔的三次求值
这个一整个是一个逗号表达式
、
函数里应该用var,let来定义,所有的函数应该只能返回一个值
y=201
在c,和javascript,所有的表达式都有值,所有函数只能返回一个值,在python,带逗号就返回元组,在这里返回的时候逗号表达式的值
这个相当于同时把三个变量赋值了
c=几是表达式的值,现在c=9,所以最终就是9
这几个有效率差异,在c++里,自增效率高,不入栈,a +=1 要入栈,而a++就是直接+1
isinstanceof 是否返回指定类型
typeof 返回类型相当于python的type函数
描述属性在不在一个对象内部
删除对象
instanceof,typeof,相当于是一个关键字,也可以作为函数来用
new出来的其实就是object
new出来的是object
instance要求必须明确使用类型定义变量,对象必须是new关键字申明创建的,用于继承关系的判断
推荐let,控制作用域
new是隐式定义的一个对象
myobj.h=动态增加属性h
var和 let定义的变量会删除失败
Math全局变量里的,不能删除预定义的属性
自己定义的属性随意删除
let和var定义的不允许随意删除,隐式申明最后不太使用
数组的使用方式
这两种方式创建就出来的都是对象
看一下这个例子,这是c风格的for循环,循环体如果只有一条语句就可以省去大括号{}
还在,相当于位置还在,数据被删除了
说的是0有没有在索引里,不是元素有没有在
不能像python一样判断值是否在,
length索引长度,是在trees索引里的
这里的in操作和python是不一样的
3被删除了,return false
这里面大括号其实就是对象
数组的in还是在问这个属性是否存在,相当于在问字典key有没有在
.[]点和中括号优先级最高
单目运算符
逻辑运算符,in,instanceof
位与,异或,位或,
逻辑and,或
三目运算符
赋值运算符
逗号优先级最低
解析式还是在实验阶段,非标准,推荐生成器,生成器函数是函数,不是生成器对象
这个东西像json的就叫object
这里是把100封装到属性里了,同时有done:false,也就是生成器还没执行完
没有了就是,undefined
return这条语句相当于多出来个yield
总共打印了10次
通过done知道这个函数执行完了没有,也是拨一下转一下