JavaScript基础知识

1、JavaScript的基本类型有哪些?引用类型有哪些?

基本数据类型:Number、String、Boolean、Null、undefined

引用数据类型:function、Object、Array

2、null与undefined的区别?

null:表示对象被定义了,但值未设置。相当于一个对象没有设置指针地址就是null。null通过typeof判断类型是‘object’。null == null,null === null,null == undefined,null !== undefined。

undefined:是一个全局对象的属性,当变量没有被赋值、函数没有返回值、访问对象不存在某个属性、函数定义了形参但没有传递实参时,都是undefined。undefined通过typeof判断类型是‘undefined’;undefined == undefined,undefined === undefined。

总结:undefined表示一个变量的初始状态,而null则表示一个变量被人为设置为空对象,而不是原始状态。在实际过程中,不需要对变量赋值 undefined,当需要释放一个对象时,直接赋值null即可。让一个变量为空,直接给该变量赋值null即可。 

3、什么是伪数组?如何将其转化为真实的数组?

伪数组:

        a、具有length属性

        b、按索引的方式存储数据

        c、不具有数组的 push()、pop()等方法

伪数组--->真实数组:

        a、在ES6中,使用Array.from()

        b、[].slice.call(eleArr)或者Array.prototype.slice.call(eleArr)

4、src与href的区别?

        src:指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置

        href:指向网络资源的位置,建立和当前元素(锚点)或当前文档(链接)之间的链接

5、JavaScript中的作用域、预解析与变量声明提升?

        a、作用域:指变量的有效范围,在一定空间内对数据进行读写操作。

                (1)全局作用域:最外层函数定义的变量拥有全局作用域,即对其内部所有函数,都可以访问。

                (2)局部作用域:只有在固定的代码片段内可以访问到,对于函数外部无法访问。

                (3)块级作用域:所有的代码块都可以划分变量的作用域。

        b、预解析:JS代码是由浏览器中的JavaScript解析器执行。JavaScript解析器执行JS代码时,分两个过程:预解析过程 和 代码执行过程。

                预解析过程:

                        (1)将变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。

                        (2)将函数的声明提升到当前作用域的最前面,只会提升声明,不会提示调用。

                        (3)先提升 var,后提升function。

6、变量提升与函数提升的区别

        a、变量提升:预编译期间会将变量声明与函数声明提升到其对应作用域的最顶端,函数内声明的变量只会提升到该函数作用域的最顶端

        b、函数提升:(1)函数提升只会提升函数声明方式写法,函数表达式的写法不存在函数提升;(2)函数提升的优先级大于变量提升的优先级,即函数提升在变量提升之上。

7、什么是作用域链?

        a、代码在一个环境中执行时,会创建变量对象的一个作用域链。

        b、子级作用域返回父级作用域中寻找变量,称之为作用域链。

8、什么是事件冒泡?如何阻止事件冒泡?

Dom事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。

a、事件捕获:当鼠标点击或触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击子元素,若父元素通过事件捕获方式注册了对应的事件,则先触发父元素绑定的事件。

b、事件冒泡:与事件捕获相反,事件冒泡顺序是由内到外进行事件传播,直到根节点。

c、dom标准事件流的触发先后顺序:先捕获后冒泡,即当触发dom事件时,先进行事件捕获,捕获到事件源后通过事件传播进行事件冒泡。

d、阻止事件冒泡:

        (1)event.stopPropagation()

        (2)return false

        (3)event.preventDefault()

9、什么是页面重绘和回流?

        a、重绘:当元素自身的宽高,布局,以及显示或隐藏没有改变,只是改变了元素的外观风格时,就产生重绘。例如,改变了元素的background-color...。

        b、回流:当render tree 的一部分或全部的元素因改变了自身的宽高、布局、显示或隐藏,或者元素内部的文字结构发生变化,导致需要重新构建页面时,就产生回流。

        c、结论:回流必然触发重绘,而重绘不一定触发回流。

10、JavaScript有几种方法判断变量的类型?

        typeof、instanceof、Object.prototype.toString.call()(对象原型链判断方法)、constructor(用于引用数据类型)

        a、typeof:常用于判断基本数据类型。对于引用数据类型除了function返回‘function’,其余全部返回‘object’。

        b、instanceof:主要用于区分引用数据类型。验证当前类型的原型prototype是否出现在实例的原型链__proto__上,只要在它的原型链上,则结果都为true。

        c、constructor:主要用于检测引用数据类型。获取实例的构造函数判断和某个类是否相同,如果相同则说明该数据符合那个数据类型,这个方法不会把原型链上的其他类也加进来,避免了原型链的干扰。

        d、Object.prototype.toString.call(数据):适用于所有类型的判断检测。返回结果是该数据类型的字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值