牛客网评论区
- ==delete 操作符用于删除对象的某个属性;==如果没有指向这个属性的引用,那它最终会被释放。
typeof
能判断类型有:number、string、boolean、symbol、undefined、function; **object、**array、null 的变量都返回 object
![](https://i-blog.csdnimg.cn/blog_migrate/2aa10cee5ae01d3876997c82beb48228.png)
Object.prototype.toString()
为 Object 对象的实例方法,默认情况下(即不重写该方法),返回参数的类型字符串。
![](https://i-blog.csdnimg.cn/blog_migrate/bb82f556e43db1c36974f0db1a77f88b.png)
Array 为js
的原生对象,它有一个静态方法:Array.isArray()
,能判断参数1是否为数组
![](https://i-blog.csdnimg.cn/blog_migrate/2aa10cee5ae01d3876997c82beb48228.png)
class和let一样都有暂时性死区,在被声明前无法访问
也就是在当前作用域能找到,但是要在声明后才能访问
es6中的class
和let const
一样都不存在提升
(实际存在提升,只是因为TDZ
的作用,并不会像var那样得到undefined,而是直接抛出错误)
临时死区(Temporal Dead Zone),简写为 TDZ
。
let
和 const
声明的变量不会被提升到作用域顶部,如果在声明前访问这些变量,会导致错误:
原来的代码
var a = 1;
function test(){
//console.log(a) 位置A
class a {}
// console.log(a) 位置B
}
test();
实际上提升后的
var a = 1;
function test(){
console.log(a) 位置A //在test()作用域内找得到a
//是一个class但是存在TDZ暂时性死区,访问报错
class a {}
console.log(a) 位置B //a已经声明创建出来了
}
test()
-
in操作符,对于数组属性需要指定数字形式的索引值来表示数组的属性名称(固有属性除外,如length)。
-
所以说在这里,1 in [1]并不是表示数字1在不在数组里。而是表示数组中含不含有1这个索引index值。 数组长度为1,所以只含有的index值为0,这个表达式返回
fasle
。 -
任何数值除以0都会导致错误而终止程序执行。但是在 JavaScript 中,会返回出特殊的值,因此不会影响程序的执行。
-
比0大的数除以0,则会得到无穷大,所以 js 用 Infinity 来显示出来。
-
也就是1/0得到的是Infinity。
isNaN(1/0)
返回的是false
。但是isNaN(0/0)
返回的就是true
1 && 2 > 1,先判断右边的表达式,2>1返回true。1 && true返回的结果也是true。>号的权重大于&&,所以先是右边开始
Array对象方法
![](https://i-blog.csdnimg.cn/blog_migrate/9522aa804b255cf785b62e7e6e383232.png)
js
基本数据类型包括:
1.Number
typeof
123 =>“number”
2.String
typeof 'abc'
=>“string”
3.Boolean
typeof true
=>“boolean”
4.Function
typeof console.log()
=>“function”
5.Object
typeof
null =>“object”
typeof
{ } =>“object”
typeof
[ ] =>“object”
6.Undefined
typeof
undefined =>“undefined”
题中的Array属于数组对象
typeof
new Array() =>“object”
值得一提的是typeof
打印出的类型都是字符串类型,且首字母小写
例如:typeof(typeof undefined) =>“string”
类
类的本质是函数,实际上,ES6中的类可以视为ES5中构造函数的另一种写法
类的所有实例方法均定义在类的原型对象上,因此,在类内定义的实例方法和在类的原型对象上定义方法是等价的
数组的sort()方法
升序排序 return a - b; 降序排序 return b - a。
==setMonth(n)==这里是0-11分别对应1-12月
由于存在变量提升,在if语句执行之前会先使用var声明变量a,并且声明时是在全局作用域下,因此变量a自动成为window对象的属性,故a in window的返回结果为true,使用“!”将条件取反后返回结果为false,所以不会执行if中的赋值语句,a值为undefined
数组的方法
pop()方法用于删除数组的最后一个元素,并返回被删除的最后一个元素,这样的话数组就被改变了。 splice()方法可以对数组中已经存在元素进行删除,也可以添加元素到数组中。 sort()方法对数组中所有的元素都进行排序,如果没有提供比较函数compareFunction,则按照字符串的Unicode码的顺序进行排序。 所以以上三种方法都改变了数组。 而 concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,返回一个新的数组。该数组是通过把所有的arrayX参数添加到arryaObject中生成的,如果要进行 concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。