变量
使用var 定义的变量,在最外层定义时,可以是使用window获取
使用 let 和 const 时,就不行,let 和cont是从当前作用域中获取
实现一个const
数据类型
null、undefined 、NaN、0、空字符串 会在转换成布尔值的时候转化为false
for循环
可以使用break提出循环
算数运算符
二元运算符 + - * / % ** 加、减、乘、除、余、次方
一元运算符:1.一元正号,不参与计算而是把其它类型转换成数字
2.一元负号,也是把其它类型转换为数字,但是前面会加上负号
逻辑运算符
1.!! 双重非,通常将数据类型转化成布尔值
函数
函数声明写法会自动提升到最上面,函数表达式不会被提升
函数可以使用arguments获取所有参数
对象
Object.create也能创建对象,但必须传递一个对象作为参数,传递的参数会成为新对象的原型
数字
0.1+0.2!==0.3 原因就是因为 在计算器中所有都是由二进制表示,而0.1和0.2都是无穷二进制表示,会被计算器截断
解决计算精度方法:
1.使用toFixed() 强制保留小数点后位数
2.将运算的小数扩大到10倍、100倍....,就是变成整数后计算,在除以倍数
NaN 是 not a Number 的意思
数组
数组中empty和undefined的区别
empty表示空位,不是一种数据类型 是由于人为修改arr.length或写入时多写逗号造成的,使用forEach会忽略空位,是用for会转化为undefined并遍历
undefined是一种数据类型,只是值未定义
JSON
JSON.stringify中第三个参数可以控制格式
事件
自定义事件 Event和CustomEvent都可以,CustomEvent注册的自定义事件可以在detail中传递参数
typeof
typeof null 会输出一个object,原因是 null表示一个空指针,内部又和对象一样,所有就会object
typeof 经常被用来检测基础类型,但是不够准确,无法区分数组、对象、null,更精准的检测应考虑使用 Object.prototype.toString
方法
debugger 调试
对象中的getter和setter
也可以使用Object中deineProperty方法设置
new操作符和构造函数
当使用new运算符调用函数时,大致会进行一下几个操作
1.创建一个空对象
2.将函数的this指向这个空对象
3.执行函数
4.如果函数没有指定返回值,则直接返回this(一开始创建的空对象),否则返回指定返回值
标签:运算符,函数,对象,数据类型,js,学习,null,undefined From: https://www.cnblogs.com/fanbulaile/p/17693302.html