扫码关注公众号
数据类型判断方法有哪些?
1.typeoftypeof返回值“object”、“number”、“boolean”、“undefined”、“function”、“string”、“function”、'symbol"typeof返回的值都是字符串类型typeof操作可以判断基本类型的数据,但是也存在一些特例,比如typeofnull返回的是“object”,因为从逻辑上,null这个特殊值被认为是一个对空对象的引用,表示一个空对象指针,实际上是基础类型2.instanceofinstanceof是用来判断数据是否是某个对象的实例,返回一个布尔值3.constructor使用constructor可以查看目标构造函数,也可以进行数据类型判断。但是不能判断null和undefined,因为这两个特殊类型没有其对应的包装对象。constructor和instanceof类似,constructor返回结果的是自己的构造函数,而instructor则是自己与构造函数比较返回布尔值4.Object.prototype.toString在判断数据类型时,我们称Object.prototype.toString为“万能方法”“终极方法”,工作中也是比较常用而且准确
JS的作用域类型?改变函数作用域的方法?
一般认为的作用域是词法作用域,此外JS还提供了一些动态改变作用域的方法,常见的作用域类型有:函数作用域,如果在函数内部我们给未定义的一个变量赋值,这个变量会转变成为一个全局变量;块作用域:块作用域吧标识符限制在{}中。改变函数作用域的方法:eval(),这个方法接受一个字符串作为参数,并将其中的内容视为好像在书写时就存在于程序中这个位置的代码,with关键字,通常被当做重复引用同一个对象的多个属性的快捷方式。
基本数据类型和引用数据类型的区别
基本数据类型和引用数据类型的区别如下:基本数据类型的值是不可变的,任何方法都无法改变一个基本类型的值,当这个变量重新赋值后看起来变量的值是改变了,但是这里变量名只是指向变量的一个指针,所以改变的是指针的指向改变,该变量是不变的,但是引用类型可以改变。基本数据类型不可以添加属性和方法,但是引用类型可以。基本数据类型的赋值是简单赋值,如果从一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,引用数据类型的赋值是对象引用。基本数据类型的比较是值的比较,引用类型的比较是引用的比较,比较对象的内存地址是否相同。基本数据类型是存放在栈区的,引用数据类型同事保存在栈区和堆区。
下面哪个不属于 JS 的作用域类型 ( )
正确答案是Bes5只有全局作用域跟函数作用域;es6新增块级作用域。
说一说JS变量提升?
得分点:Var声明的变量声明提升、函数声明提升、let和const变量不提升 标准回答:变量提升是指JS的变量和函数声明会在代码编译期,提升到代码的最前面。 变量提升成立的前提是使用Var关键字进行声明的变量,并且变量提升的时候只有声明被提升,赋值并不会被提升,同时函数的声明提升会比变量的提升优先。变量提升的结果,可以在变量初始化之前访问该变量,返回的是undefined。在函数声明前可以调用该函数。 加分回答:使用let和const声明的变量是创建提升,形成暂时性死区,在初始化之前访问let和const创建的变量会报错。