split() join() 的区别
Javascript的事件流模型都有什么?
“事件冒泡”:事件逐级向上传播
“事件捕捉”:事件逐级向下传播,一直到最具体的
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
split() join() 的区别
split():以指定的字符分割字符串返回一个数组,字符串方法
join(): 以指定的字符连接数组中元素返回一个字符串,数组方法
如何阻止事件冒泡
ev.stopPropagation();
如何阻止默认事件
答案:return false 或者 ev.prevent Default();
JavaScript中如何检测一个变量是一个 String 类型?
typeof 变量
变量.constructor === String
Object.prototype.toString.call(变量) // 推荐使用
javascript 的 typeof 返回哪些数据类型(至少六个)检测类型如下:
string、 number、 boolean 、undefined 、object 、function 、symbol(ES6之后新增的类型)
如何判断变量为NaN
通过isNaN()判断
isNaN(NaN) // 返回true
isNaN(1000) // 返回false
isNaN(‘小明’) // 返回true(判断前会转换成number类型)
isNaN(‘101’) // 返回false
什么是JS变量提升 与 块级作用域
变量提升:就是会把变量定义提升到当前作用域的最上面
块级作用域:JS 中作用域有:全局作用域、函数作用域。没有块作用域的概念。ES6中新增了块级作用域。块作用域由 { } 包括,if 语句和 for 语句里面的{ }也属于块作用域。在外边不能调用块作用域里边定义的变量
null / undefined 的区别
null值:属于null类型,代表“空值",代表一个空对象指针;使用typeof运算得到 “object",所以你可以认为它是一个特殊的对象值。
undefined值:属于undefined类型,当一个声明的变量未初始化赋值时,得到的就是undefined。使用typeof运算得到“undefined",
foo = foo || bar,这行代码是什么意思?为什么要这样写?
如果foo转为false, 则返回bar;否则直接返回foo
逻辑或:如果第一个值为true,直接返回第一个值;否则直接返回第二个值
逻辑与:如果第一个值为false,直接返回第一个值;否则返回第二个值、
target 和 currentTarget 区别
都是事件对象上的属性
event.target:返回触发事件的元素
event.currentTarget:返回绑定事件的元素(相当于事件中this)
prototype 和 proto 的关系是什么
prototype: 所有函数都会有一个prototype属性, 它就是函数的原型对象
proto: 所有实例对象上都会有一个proto属性, 它等同于函数的原型对象
(补充说明)
原型链:因为所有实例对象都原型对象,原型对象也个对象,
所以它也自己原型对象(这样形成原型链)
答案:
所有的对象都拥有proto属性,它指向对象构造函数的 prototype 属性
所有的函数都同时拥有proto和 prototype 属性
函数的proto指向自己的函数实现 函数的 protytpe 是一个对象(原型)
所以函数的 prototype 也有proto属性 指向 Object.prototype
Object.prototype.proto指向 null
请说一下你常用的数组方法(至少七个)
答案:
1)Array.push():此方法是在数组的后面添加新加元素,此方法改变了数组的长度:
2)Array.pop():此方法在数组后面删除最后一个元素,并返回数组,此方法改变了数组的长度:
3) Array.shift():此方法在数组后面删除第一个元素,并返回数组,此方法改变了数组的长度:
4) Array.unshift():此方法是将一个或多个元素添加到数组的开头,并返回新数组的长度:
5)Array.isArray():判断一个对象是不是数组,返回的是布尔值
6) Array.concat():此方法是一个可以将多个数组拼接成一个数组:
7)Array.toString() : 把数组作为字符串返回
8) Array.join() :以指定字符拼接成字符串,然后返回
9) Array.splice:(开始位置, 删除的个数,元素)
10)Array.map():此方法是将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组
11)Array.forEach():此方法是将数组中的每个元素执行传进提供的函数,没有返回值,直接改变原数组,注意和 map 方法区分
12)Array.filter():此方法是将所有元素进行判断,将满足条件的元素作为一个新的数组返回
13)Array.every():此方法是将所有元素进行判断返回一个布尔值,如果所有元素都满足判断条件,则返回 true,否则为 false:
14)Array.some():此方法是将所有元素进行判断返回一个布尔值,如果存在元素都满足判断条件,则返回 true,若所有元素都不满足判断条件,则返回 false:
15)Array.reduce():此方法是所有元素调用返回函数,返回值为最后结果,传入的值必须是函数类型:
与之相对应的还有一个 Array.reduceRight() 方法,区别是这个是从右向左操作
- 点赞
- 收藏
- 关注作者
评论(0)