1. 4dajavascript 的 typeof返回的类型是?
"string"
考察typeof作用
typeof 1 // number
typeof NaN // number
typeof Infinity // number
typeof function() {} // function
typeof 's' // string
typeof 'null' // object
typeof /\s/g // object 谷歌浏览器上正则的类型上对象
typeof [] // object
typeof undefined // undefined
typeof Symbol() // symbol
typeof true // boolean
延伸问答
- 怎么判断null?
/**
* 排除可隐性转为false的变量
* 排除undefined的情况
* !param排除param==false的情况
*/
function isNull(param) {
if(!param && typeof param != 'undefined' && param!=0) {
return true
}else {
return false
}
}
/**
* 直接使用 ===
*/
function isNull(param) {
return param === null
}
- typeof 和 instanceof的区别?
typeof常用于检测基本类型
instanceof用于检测引用类型
/**
* 检测是否为一个数组
*/
function isArray(param) {
return param instanceof Array
}
/**
* 检测是否为一个数组
* 利用es5的Array.isArray()方法
*/
function isArray(param) {
return Array.isArray(param)
}
/**
* 检测是否为一个数组
* 利用构造函数,constructor返回创建此对象的函数的引用
*/
function isArray(param) {
return param.constructor === Array
}
/**
* 检测是否为一个数组
* isPrototypeOf()方法用于测试一个对象是否存在于另一个对象的原型链上。
*/
function isArray(param) {
return Array.prototype.isPrototypeOf(param)
}
2、split()和join()区别
split
是String对象上一个方法,用来将字符串转化为数组,返回切割后组成的数组
语法:
stringObject.split(separator,howmany)
var str = 'string'
str.split(); // ['string']
str.split(''); // ["s", "t", "r", "i", "n", "g"]
str.split(/\b[\w]*i[\w]*\b/g); //["", ""]
join
是Array对象上一个方法,用来把数组中所有元素放入一个字符串中,返回组成的字符串
语法
arrayObject.join(separator)
var a = ['s','s']
a.join('-') //'s-s'
3、如何阻止默认事件?
event.preventDefault();
简述下事件传播流程:
事件捕获➡️处于目标阶段➡️事件冒泡阶段
一般我们的事件都在冒泡阶段触发
4、js延迟加载的方式有哪些?
-
<script src='xxx.js' defer>
在文档加载完毕后才执行xxx.js,保证按顺序执行 -
<script src='xxx.js' async>
xxx.js一旦下载完成就立马执行,在onload事件之前完成,不能保证按顺序完成 - 使用setTimeout函数
5、写一个function,清除字符串前后的空格。(兼容所有浏览器)
// 如果不考虑兼容,可以使用trim
function removeBlackSpace(str) {
return str.trim()
}
// 考虑兼容,需要用到正则
function removeBlackSpace(str) {
return str.replace(/(^\s*)|(\s*)$/g,"")
}
6、在严格模式('use strict')下进行 Javascript开发的好处?
具体可以到网上查阅
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
7、讲一下事件委托和事件代理?
其实就是一回事,如果理解事件的传播流程,就会理解委托和代理的。
比如说,利用事件冒泡的过程,将子元素的事件委托到父元素上去代理。那子元素就是事件委托方,父元素就是事件代理方。
非要区分下的话,事件代理适用于的是对子元素统一的处理方式;而事件委托适用于不用子元素有不同的处理方式的时候。
event对象中target和currentTarger的区别是?
- target指向触发事件的元素,在事件流的目标阶段
- currentTarget指向绑定事件的元素,事件流中都会有
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。