成都数之联科技前端题
来源:互联网 发布:韩国电视直播软件 编辑:程序博客网 时间:2024/04/29 12:57
1.举例数组函数find的用法
该方法是ES6新增的
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
[1,4,-5,10].find(function(value,index,arr){ return value>9;})//10
上面的代码中,find方法的回调函数可以接受3个参数,依次为当前的值、当前的位置和原数组。
数组实例的findIndex方法的用法与find方法类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
[1,5,10,15].findIndex(function(value,index,arr){ return value>9;})//2
这两个方法都可以接受第2个参数,用来绑定回调函数的this对象。
另外这两个方法都可以发现NaN,弥补了数组的IndexOf方法的不足。
[NaN].indexOf(NaN)// -1
[NaN].findIndex(y => Object.is(NaN,y))//0
以上代码中,indexOf方法无法识别数组成员NaN,但是findIndex方法可以借助Object.is
方法做到。
2.请举例说明数组函数slice的用法
3.请举例说明Object.assign()、Object.keys()的用法
Object.assign()属于ES6的语法
Object.assign方法用来将源对象的所有可枚举属性复制到目标对象。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。
var target = {a:1};var source1 = {b:2};var source2 = {c:3};Object.assign(target,source1,source2);console.log(target);//{ a: 1, b: 2, c: 3 }
注意一:如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。例子如下所示:
var target = {a:1,b:1};var source1 = {b:2,c:2};var source2 = {c:3};Object.assign(target,source1,source2);console.log(target);//{ a: 1, b: 2, c: 3 }
注意二:Object.assign只赋值自身属性,不可枚举的属性和继承的属性不会被复制。例子如下所示:
Object.assign({b:'c'}, Object.defineProperty({},'invisible',{ enumerable:false, value:'hello' }));//{b:'c'}
上面的代码中,Object.assign要复制的对象只有一个不可枚举属性invisible,这个属性并没有被复制进去。
4.指出下面代码中的错误并给出改正方法
const str = 'hello js';const chars = [];for(const char in str){ chars.push(char);}console.log(chars.join(','));
1.const用来声明常量。一旦声明,其值就不能改变。所以应将 const chars = [];
改为let chars = [];
2.for循环中变量char每一次循环都是一个新的变量,应该使用let声明,使得当前的char 只能本轮循环有效。所以将const char in str
改为let char in str
3.for循环中char 表示的是字符串中单个字符索引,所以应将chars.push(char);
改为 chars.push(str[char]);
5.请使用Promise封装下面的异步方法request,使之可以同步调用。
//request的用法如下request(url,(response) => { console.log(response);});//请使用request实现同步方法requestSync(url)//const response = await requestSync(url);function requestSync(url) {}
5.请谈谈你对前沿web技术(如ES6/7、Shdow DOM、CSS in JS 、WebGL、WebAssembly等)
2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015。
6.哪种方式能改变作用域链
1.with
2.try catch
3.eval
while不能改变作用域链
7.DOM中怎么创建,查找,添加,删除,复制节点
- 成都数之联科技前端题
- 细数前端中的一些黑科技
- Android面试之——杭州品联科技 成都分公司面试总结(内含绝密文件)
- 新电信息科技(成都)有限公司,急招JAVA程序员数名!!!
- 成都 中嵌 川大科技大厦
- 成都立方体科技--实习--第一天
- 面试题目20130725 成都原点科技
- 平安科技面试(成都应届)
- 源数科技JAVA笔试题
- 商汤科技前端
- 成都、九寨、黄龙、都江堰之成都
- 成都之行
- 成都一周之忙里偷闲
- 成都之行
- 回忆成都之行
- 找工作之成都篇
- 凹数科技笔试
- 成都高新区:百亿投资打造西部科技创新中心
- TOMCAT服务器重启造成图片资源自动删除
- 在MVC中使用rdlc格式的报表
- Python3之Django Web框架模型篇(一)
- 评《程序员的***》系列
- Android各大手机品牌手机跳转到权限管理界面
- 成都数之联科技前端题
- Hadoop(十三)分析MapReduce程序
- LIRC命令使用问题
- http你不得不知道的那些事(二)--CSRF
- ZOJ Problem Set
- 如何高效的编写Verlog HDL——菜鸟版
- java中的反射机制
- MySQL日志--二进制日志binlog
- POJ系列——java