JavaScript中的虚值
const falsyValues = ["",0,null, undefined,NaN, false];
简单的来说虚值就是是在转换为布尔值时变为false的值。
如何检查值是否虚值
使用Boolean 函数或者!!运算符。
use strict
"use strict”是ES5特性,它使我们的代码在函数或整个脚本中处于严格模式。严格模式帮助我们在代码的早期避免bug,并为其添加限制。
严格模式的—些限制
1、变量必须声明后再使用
2、函数的参数不能有同名属性,否则报错
3、不能使用with语句
4、不能对只读属性赋值,否则报错
5、不能使用前缀0表示八进制数,否则报错
6、不能删除不可删除的属性,否则报错
7、不能删除变量delete prop,会报错,只能删除属性delete global[prop]
8、eval不能在它的外层作用域引入变量
9、eval和arguments不能被重新赋值
10、arguments不会自动反映函数参数的变化
11、不能使用arguments.callee
12、不能使用arguments.caller
13、禁止this指向全局对象
14、不能使用fn.caller和fn.arguments获取函数调用的堆栈
15、增加了保留字(比如protected、 static和interface)
设立”严格模式”的目的
1、消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
2、消除代码运行的一些不安全之处,保证代码运行的安全;
3、提高编译器效率,增加运行速度;
4、为未来新版本的Javascript做好铺垫。
JavaScript中this值
基本上,this指的是当前正在执行或调用该函数的对象的值。this值的变化取决于我们使用它的上下文和我们在哪里使用它。
Function.prototype.apply方法的用途
apply()方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
Function.prototype.call方法的用途
call()方法使用一个指定的this值和单独给出的一个或多个参数来调用一个函数。
Function.prototype.apply和Function.prototype.call的区别
apply()方法可以在使用一个指定的this值和一个参数数组(或类数组对象)的前提下调用某个函数或方法。call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表。
Function.prototype.bind的用途
bind()方法创建一个新的函数,在 bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
高阶函数
高阶函数只是将函数作为参数或返回值的函数。
手动实现Array.prototype.map方法
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
手动实现Array.prototype.filter方法
filter()方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。
手动实现Array,prototype.reduce方法
reduce()方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
如何创建一个没有prototype(原型)的对象
我们可以使用Object.create方法创建没有原型的对象。
ES6或ECMAScript 2015的新特性
1、箭头函数
2、类
3、模板字符串
4、加强的对象字面量
5、对象解构
6、Promise
7、生成器
8、模块
9、Symbol
10、代理
11、Set
12、函数默认参数
13.、rest和展开
14、块作用域
var,let和const的区别
var声明的变量会挂载在window上,而let 和 const声明的变量不会
箭头函数
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this , arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。