es6中的字符串与箭头函数,前端开发项目

本文详细解释了JavaScript中的块级作用域、变量提升、let和const关键字的区别,以及解构赋值在数组和对象中的应用,强调了临时性死区的概念,旨在帮助前端开发者理解和掌握ES6新特性。
摘要由CSDN通过智能技术生成

//块级作用域 好处,可以去防止变量的污染

//变量提升,此时存在变量提升,就是预编译的过程

var num = 100;

function fn(){

num undefined

console.log(num);

if(false){

//num=10

var num = 10;

}

}

fn()

//let作用1.let只在它所在的区域内有效  2.不存在变量提升

//3.暂时性死区  4.不允许重复声明

//前者出现变量提升,后者是因为let改变了语法行为,它声明的变量一定要在声明后使用。

console.log(foo);

var foo = 2;

console.log(bar);

let bar = 1;

//let,在闭包中产生的问题使用let来解决

var arr = [];

for(var i = 0; i < 10; i++){

(function(j){

arr[j] = function(){

console.log(j);

}

})(i)

}

arr[3]();

//此时i的作用域不同,let i = 0的作用域在外部,arr[i]中的作用域在内部,因而就不会产生闭包问题

for(let i = 0; i < 10; i++){

arr[i] = function(){

console.log(i)

}

}

arr[9]();

//暂时性死区,只要块级元素的作用域存在let,它所声明的变量就会绑定在这个区域内,不会受到外部变量的影响

//总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

if (true) {

// 代码区

tmp = ‘abc’; // ReferenceError

console.log(tmp); // ReferenceError

let tmp; // 暂时性死区的辨别标志

console.log(tmp); // undefined

tmp = 123;

console.log(tmp); // 123

}

//const 声明一个只读常量,一旦声明常量的值就不能改变,使用const变量时,必须要给变量赋值否则就会报错

//const的作用域与let命令相同,只在声明所在的块级作用域内有效

const PI;//错误

const Pi= Math.PI;

console.log(Pi)

//数组的解构赋值

//ES6允许一定模式,从数组和对象中取值,对变量进行赋值,这称为解构赋值

//在ES6中下面的写法是被允许的

let [a, b, c] = [2, 3, 4];

console.log(a, b, c);//此时对应 a:2 b:3 c:4

let [, , third] = [“foo”, “bar”, “fee”];

console.log(third); //此时得third为字符串fee

let [head, …end] = [1, 2, 3, 4, 5];

console.log(head, end);//此时head为1 end为[2,3,4,5]

let [x, y, …z] = [‘a’];

console.log(x,y,z);// x: “a” y undefined z []

如果结构不成功,变量得值就为undefiend

//不完全解构

let [a,[b],c] = [1,[2,3],4];

console.log(a,b,c);//此时得a为1 b为2 c为4

//如果等号得右边不是数组,那么也将会报错,下面的所有例子中都会出现报错的情况

let [foo] = 1;

let [foo] = false;

let [foo] = NaN;

let [foo] = undefined;

let [foo] = null;

let [foo] = {};

//对于Set结构,也可以使用数组的解析赋值,原则上只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值

let [x,y,z] = new Set([“a”,“b”,“c”]);

console.log(x,y,z); // x: ‘a’ y: ‘b’ z: ‘c’

//默认值,解析解构允许指定默认值

let [foo = true] = [];//此时的foo = true

let [x ,y = ‘b’] = [‘a’]//此时 x: ‘a’  y: ‘b’

let[x = 1] = [undefined]; //此时的x为1

let[x = 1] = [null]; //此时的x为null

//当默认值是一个表达式是,只有用到默认值时,函数才会执行

function fn(){

console.log(‘you are so cool’);

}

let[a = fn()] = [1];//此时的a值为1

console.log(a);

//默认值也可以引用解构赋值的其他变量

let[x = 1,y = x] = []; // x:1 y:1

let[x = 1,y = x] = [2]; // x:2 y:2

let[x = 1,y = x] = [1,2]; //x:1 y:2

let[x = y, y = 1] = [];//此时会报错,因为y作x的默认值时,还没有被声明

//解构对象,数组的解构是按照数组中元素的位置来决定的,而对象的解构是按照变量名是否相等来解构的

//如果左边的变量名在右边没有与其对应的值,那么解构出来的变量将为undefined

let {bar,foo} = { bar : ‘abc’, foo : ‘efg’}; // 此时bar: ‘abc’ foo: ‘efg’

let {fee} = { ana : ‘aaa’};//fee此时为undefined

console.log(bar,foo,fee);

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

tps://bbs.csdn.net/topics/618166371)**

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值