共计 2084 个字符,预计需要花费 6 分钟才能阅读完成。
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、讲一下事件委托和事件代理?
其实就是一回事,如果理解事件的传播流程,就会理解委托和代理的。
比如说,利用事件冒泡的过程,将子元素的事件委托到父元素上去代理。那子元素就是事件委托方,父元素就是事件代理方。
非要区分下的话,事件代理适用于的是对子元素统一的处理方式;而事件委托适用于不用子元素有不同的处理方式的时候。
js 中的事件委托或是事件代理详解
event 对象中 target 和 currentTarger 的区别是?
- target 指向触发事件的元素,在事件流的目标阶段
- currentTarget 指向绑定事件的元素,事件流中都会有
正文完
发表至: javascript
2019-09-03