javascript中的堆栈
两者都是存放临时数据的地方。
堆: 是堆内存的简称。"堆的存取方式跟顺序没有关系,不局限出入口"。堆是动态分配内存,内存大小不一,也不会自动释放。
栈: 是栈内存的简称。栈的特点是"LIFO,即后进先出(Last in, first out)"。数据存储时只能从顶部逐个存入,取出时也需从顶部逐个取出。是自动分配相对固定大小的内存空间,并由系统自动释放.
ES6新特性
ECMAScript 6.0(以下简称ES6)是JS语言的下一代标准,它的目标是使得JS语言可以用来撰写复杂的大型应用程序,成为企业级开发语言。
ES是JS的一种语法规格,后者是前者的一种实现
1.模板字符串(就是反引号引起来的字符串)
2.展开数组
3.对象字面量简写
4.箭头函数
5.函数传递参数的时候的默认值
6.解构赋值
js中的string常见方法
1.charAt() 返回指定位置的字符。
2.charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
3.concat() 用于连接两个或多个字符串。
4.fromCharCode() 接受一个指定的 Unicode 值,然后返回一个字符串。
5.match() 在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。匹配不到返回Null。6/replace() 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
7.split() 用于把一个字符串分割成字符串数组。
8.substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。9.substring() 方法用于提取字符串中介于两个指定下标之间的字符(类似slice)。
null和undefineg区别
null:空对象指针 -> 没有具体的值 -> 一般都是我们手动设置初始的值为null,后期的话会给其赋值
undefined:未定义 -> 连东西都没有 -> 一般都是浏览器默认的值
undefined的典型用法:
变量被声明了,但是没有赋值时,就等于undefined。
调用函数时,应该提供的参数没有提供,该参数等于undefined。
对象没有赋值属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
null的典型用法:
作为函数的参数,表示该函数的参数不是对象。
作为对象原型链的终点。
undefined是基本类型的数据,null是对象类型的数据
==和===区别
两者都是判断等式两边是否相等,最大的区别就是==会进行类型的转换之后再判断两者是否相等,而===不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断,可以理解为只有等式两边是全等(数据类型相同,值相同)的时候结果才会是true,否则全为false。
全等比较(===)不转换数据类型,数据类型和内容必须完全一致才是相等
全等比较(===)两边是否相等的情况:
(1)类型不同,一定不相等
(2)两个同为数值,并且相等,则相等;若其中一个为NaN,一定不相等
(3)两个都为字符串,每个位置的字符都一样,则相等
(4)两个同为true,或是false,则相等
(5)两个值都引用同一个对象或函数,则相等,否则不相等(引用类型地址空间可能不一样)
(6)两个值都为null,或undefined,则相等
(7*)两者同为引用类型时,必须是指向同一个引用地址才相等,否则不相等(5的补充)
(8)-0 === +0 结果为:true