广州益邦集团笔试题

9次阅读

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

正文完
 0