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指向绑定事件的元素,事件流中都会有

李文武
41 声望3 粉丝

我曾经失落失望,失掉所有方向