ES6面试题基础版_es6 可以不按顺序传参吗-程序员宅基地

技术标签: 基础篇  es6  javascript  

1、变量

在ES6之前,变量声明关键字:var
var的缺点:
(1)var可以多次声明同一个变量–在其他编程语言是没办法想象的

var a =0;
var a = 99;

(2)var会造成变量提升

(function rr() {
    
  if(true) {
    
    var a = 666;
  }
  console.log(a); //输出666
})()

ES6变量声明关键字:let 变量声明;const 常量声明。解决了var前面提到的两个缺点。
let以及const都是块级作用域。
如何理解块级作用域

在一个函数内部 function (){}
在一个代码块内部
常见面试题:

for(var a = 0; a < 3; a++) {
    
  setTimeout(function() {
    
    console.log(a);
  }, 1000)
}
//输出结果都为3

如何将结果输出为0, 1, 2
es5处理方法 – 用函数制造块级作用域

for(var a = 0; a < 3; a++) {
    
  (function (a) {
    
    setTimeout(function() {
    
      console.log(a);
    }, 1000)
  })(a)
}
//输出结果0,1,2

es6处理方法 – 更加简单明了

for(let a = 0; a < 3; a++) {
    
  setTimeout(function() {
    
    console.log(a);
  }, 1000)
}
//输出结果为:0,1,2

2、函数 (箭头函数)

(1)不需要function关键字来创建函数
es5创建函数

var aa = function() {
    }

es6创建函数

var aa = () => {
    }

(2)可以极大的简写函数
es5函数

var fn = function(a) {
      
      return a + 5
}  

可以利用箭头函数简写为:

var fn = a => a + 5;    

简写规则:
当函数所传参数只有一个时,可以去掉(); eg: (a) => {} 简写为:a => {}

当函数体中只返回值,而没有其他操作时,可以去掉{};eg: (a, b) => {return a+b} 简写为:(a, b) => a+b(3)继承上下文的关键字this
es5继承上下文的关键字

var fn = function() {
    
}
fn.bind(this)

es6继承上下文的关键字

var fn = () => {
    }

3、数组
新增常用的4个方法
(1)map --映射

let arr=[66,59,80];
let result=arr.map(item => {
    
  if(item >= 60){
    
    return "及格"
  }else{
    
    return "不及格"
  }
});
//result:["及格", "不及格", "及格"]

(2)reduce --汇总

let arr = [12,69,180,8763]; 
let result = arr.reduce((tmp, item, index) => {
    
            console.log(tmp, item, index);   
            return tmp + item;
});
console.log(result);//求和

(3)filter --过滤

let arr=[
    {
    title: '电源线', price: 50},
    {
    title: '电脑', price: 13000},
    {
    title: '键盘', price: 120},
    {
    title: '手机', price: 9000}
];
let result=arr.filter(json=>json.price>=5000);
console.log(result);//[{title: '电脑', price: 13000},{title: '手机', price: 9000}]

(4)forEach --迭代

let arr=[12,5,8,9];
arr.forEach((item,index)=>{
    
   console.log(index+': '+item); //0: 12  1: 5  2: 8  3: 9
});

4、函数的参数
(1)收集参数

function show(a, b, ...args){
    
  console.log(args)
}
show(1,2,3,4,5,6) //输出[3,4,5,6]

(2)展开数组

const arr1 = [1,2,3];
const arr2 = [4,5,6];
console.log([...arr1, ...arr2]); //输出[1,2,3,4,5,6]
console.log(...arr1); //输出1,2,3

(3)默认值

const show = (a=666, b=999) => {
    
  console.log(a); //输出666
  console.log(b); //输出999
}
show();

5、解构赋值
(1)左右两边结构必须一样;
(2)右边必须是个合法的值;
(3)声明和赋值不能分开(必须在一句话里完成);

let [a,b,c]=[1,2,3,999];
let {
    e,d,g}={
    e: 4, d: 5, f: 6, g: 7};
console.log(a,b,c,e,d,g);
//输出1 2 3 4 5 7

6、字符串
(1)多了两个新方法: startsWith endsWith

//startsWith
let str='https//http://mp.blog.csdn.net/postedit/79478118';
if(str.startsWith('http://')){
    
  alert('普通网址');
}else if(str.startsWith('https://')){
    
  alert('加密网址');
}else if(str.startsWith('git://')){
    
  alert('git地址');
}else if(str.startsWith('svn://')){
    
  alert('svn地址');
}else{
    
  alert('其他');
}

//endsWith
let str='12121.png';
if(str.endsWith('.txt')){
    
  alert('文本文件');
}else if(str.endsWith('.jpg')){
    
  alert('JPG图片');
}else{
    
  alert('其他');
}

(2)字符串模板
优点:方便字符串拼接;可以折行

let title='标题';
let content='内容';
let str='<div>\
  <h1>'+title+'</h1>\
  <p>'+content+'</p>\
</div>';
let str2=`<div>
  <h1>${
      title}</h1>
  <p>${
      content}</p>
</div>`;
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42485280/article/details/104607762

智能推荐

hue——hbase、hive的使用_hue 端口-程序员宅基地

文章浏览阅读8.9k次,点赞6次,收藏18次。hue入口:http://hue服务器地址:8888/about/hue默认端口号8888账号:xxxx密码:xxxxhue作用,提供给大数据用户一个web端,访问大数据集群1、 hbase web端的使用l hbase hue入口如图,data browsers选项中会有hbase选项,直接点进去就好 l 点进来后会看到我们集群hbase中的所有..._hue 端口

JMeter Ramp-up 说明-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏28次。Ramp-up Period(in seconds)【1】决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。 一般设置ramp-up=线程数启动,并上下调整到所需的。【2】用于告知JMeter 要在多长时间内建立全部的线程。默认值是0。如果._jmeter ramp-up

聚类系数(clustering coefficient)计算_聚类系数怎么算-程序员宅基地

文章浏览阅读5.6w次,点赞21次,收藏46次。转自http://blog.csdn.net/pennyliang/article/details/6838956Clustering coefficient的定义有两种;全局的和局部的。全局的算法基于triplet。triplet分为开放的triplet(open triplet)和封闭的triplet(closed triplet)两种(A triplet is three nod_聚类系数怎么算

张正友相机标定-笔记_《flexible camera calibration by viewing a plane fr-程序员宅基地

文章浏览阅读206次。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ..._《flexible camera calibration by viewing a plane from unknown orientations》

PanDownload 3.5.1 卢本伟修改版_pandownload3.51-程序员宅基地

文章浏览阅读5.6k次。点过去吧_pandownload3.51

【模型剪枝】|Learning Efficient Convolutional Networks through Network Slimming_修剪阈值-程序员宅基地

文章浏览阅读526次。作用对象:BN层(和不重要的通道)作用方式: imposes sparsity-induced regularization on the scaling factors(比例因子)通过对批量归一化(BN)层中的缩放因子强加L1正则化将BN缩放因子的值逼近零,因为每个缩放因子对应于特定的卷积通道(或完全连接的层中的神经元),使得我们能够识别不重要的通道。这有助于在随后的步骤中进行通道层次的修剪。_修剪阈值

随便推点

1024程序员节:谈谈自我感受_程序员节 谷歌-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏2次。应 :1024程序员节 | 全民狂欢,拒绝加班的一条博客前文:写这篇博客的时候,正在加班,在北京,如果没猜错的话明天周日也会加。不知道现在的你们是否也和我一样正在像这些邪恶势力低头,默默的加班。我相信有,一定有。刚开始接触编程,大概是在初中,完全是因为兴趣,没想过它会真正的成为我生活中的一部分,要知道当你的兴趣爱好成为你的第一职业并支撑你生活的时候,你就会对它产生厌恶感,我不知道你们是不是这样,但拿我个人来说,我就是这样。从最开始玩vbs脚本,到后来偶然接触js脚本,从刚开始的一个小白到后来真正踏入编_程序员节 谷歌

vue-Cli3,Vue-Cli4打包后如何配置静态资源路径?(自定义浏览器icon图标,title文本)_vue 打包后固定域名运行静态资源-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏2次。文章目录为什么要配置静态资源路径?1、首先我们要清楚什么样的环境下我们需要配置静态资源路径?2、如何配置?为什么要配置静态资源路径?1、首先我们要清楚什么样的环境下我们需要配置静态资源路径?那肯定是不是单纯的一个前端写的单页面应用的时候,我们仔细想想,如果我们开发了一个新模块,但是不是基于原来项目开发的,而实更换了一个路径?不不不,只是说新起了一个子路径,相当于二级路径,那么这个时候我们还能用原来的默认的配置去寻找接口地址,静态资源地址吗?当然这样肯定是行不通的,所以说我们需要配置一下你当前这个模块_vue 打包后固定域名运行静态资源

apollo学习之---planning理论到实践(6)坐标变换代码学习_apollo坐标转换-程序员宅基地

文章浏览阅读696次。文章目录step1step2step3step4step5piecewise_jerk_path_optimizer.ccstep1 const auto init_frenet_state = reference_line.ToFrenetFrame(planning_start_point); //===>step2step2std::pair<std::array<double, 3>, std::arr_apollo坐标转换

linux内存管理-几个重要的数据结构和函数_linux pgd-程序员宅基地

文章浏览阅读858次。从硬件的角度来说,linux内核只要能为硬件准备好页面目录PGD、页面表PT以及全局段描述表GDT和局部段描述表LDT,并正确地甚至设置有关的寄存器,就完成了内存管理机制中地址映射部分的准备工作。虽然最终的目的是地址映射,但是实际上内核所需要做的管理工作却要复杂的多。在于内存管理有关的内核代码中,有几个数据结构是很重要的,这些数据结构及其使用构成了代码中内存管理的基本框架。页面目录PGD、中建目录PMD和页面表PT分别是由表项pgd_t、pmd_t记忆pte_t构成的数组,而这些表项又都是数据结构,定义如_linux pgd

HTML中行级元素与块级元素有哪些及它们的区别_html中行级元素跟块级元素的区别-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏6次。最近,在做一些测试题,第一题就是这题,虽然答了出来但感觉不太完美,所以自己查了一些资料把它完善了一下。给大家查看。行内、块状元素区别:(1).块级元素会独占一行,其宽度自动填满其父元素宽度行内元素不会独占一行,相邻的行内元素会排列在同一行里,知道一行排不下,才会换行,其宽度随元素的内容而变化(2). 一般情况下,块级元素可以设置 width,height属性,行内元素设置width, he..._html中行级元素跟块级元素的区别

9、基于51单片机PID算法温度控制系统设计(程序+Proteus仿真+原理图+PCB源文件+参考论文+开题报告+任务书等)-程序员宅基地

文章浏览阅读296次,点赞8次,收藏7次。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

推荐文章

热门文章

相关标签