前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES新特性与TypeScript、JS性能优化

ES新特性与TypeScript、JS性能优化

作者头像
deepcc
发布于 2021-01-05 07:01:29
发布于 2021-01-05 07:01:29
1.5K00
代码可运行
举报
文章被收录于专栏:deepccdeepcc
运行总次数:0
代码可运行

简答题

一、请说出下列最终执行结果,并解释为什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = []
for (var i = 0; i < 10; i++) {
    a[i] = function () {
        console.log(i)
    }
}
a[6]() // 10
// var i 是全局作用域
// 循环结束后i的结果为10
// a[6]()调用的时候i的结果为10
// var i => let i后, a[6]()结果为6

二、请说出下列最终的执行结果,并解释为什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var tem = 123;
if (true) {
    console.log(tmp);
    let tmp
}
// 报错 ReferenceError: Cannot access 'tmp' before initialization
// 同一作用域下,let声明后才能调用,if的{}内是同一作用域

三、结合ES6新语法,用最简单的方式找出数组中的最小值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var arr = [12, 34, 32, 89, 4]

console.log(Math.min(...arr)); 

四、请详细说明var,let,const三种声明变量的方式之间的具体差别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// var: 变量 1. 可以重复申明; 2. 作用域提升;3. 可以先赋值后声明

// let:变量 2、不能重复声明;2. 块级作用域内有效,3. 先声明后使用

// const :常量 1、必须初始化内存地址,而且不能更改;2. 可以修改引用类型部分

// ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const 。
// 这两个关键字在 JavaScript 中提供了块作用域(Block Scope)变量(和常量)。
// 在 ES2015 之前,JavaScript 只有两种类型的作用域:全局作用域和函数作用域。
// 用法参见: https://www.w3school.com.cn/js/js_let.asp

五、请说出下列代码最终输出的结果,并解释为什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = 10;
var obj = {
    a:20,
    fn(){
        setTimeout(() => {
            console.log(this.a);
        }, 0);
    }
}
obj.fn()

// 20
// 箭头函数的this用父级作用域,所以输出obj.a是20

六、简述 symbol 类型的用途

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 用于object对象添加唯一的属性
// 解决属性冲突、私有属性等
const obj = {
    [Symbol()]: 123
}
console.log(obj);

const a = Symbol.for('foo')
const b = Symbol.for('foo')
console.log(a === b);// true

console.log(Symbol.for(true) === Symbol.for('true')); // true

七、说说什么是浅拷贝,什么是深拷贝?

深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。

八、请简述TypeScript与JavsScript之间的关系。

TypeScript由Microsoft开发的面向对象语言,TypeScript是 JavaScript 的超集,包含了 JavaScript 的所有元素,在TypeScript中可以运行JavaScript代码。

九、请谈谈你所认为的TypeScript优缺点

TypeScript语言的特点:

1.TypeScript由Microsoft开发的一种开源语言, 由Apache授权协议

2.TypeScript中拥有静态类型、类、模块、接口和类型注解

3.TypeScript同javascript一样易用易学,并可开发大型应用

JavaScript 的特点:

1.javascript 嵌入到网页上,就可以直接运行,不用编译,浏览器加载网页时,自动解析和运行。

2.javaScript 不支持继承和重载,但是采用创建对象时,就拥有现有对象的方式实现其继承。

3.javaScript 语法简介,变量类型简单(弱类型) 。

4.javaScript 由于只在浏览器中运行,不会访问客户端电脑中的信息,所以Js语言是一种安全的语言。

5.javaScript 是由事件驱动,由用户操作或某对象改变后触发相应的事件。

6.javaScript 运行环境为浏览器,所以无操作系统环境无关,从上我们可以看出javascript是一种跨平台的语言。

7.javaScript javascript可通过ajax技术实现同其它语言进行交互。

JavaScript 和 TypeScript不同点说明

1.TypeScript可以运行JavaScript所有代码和编码方式

2.使用TypeScript中一些新的概念,可使JavaScript开发变得容易和快捷

3.TypeScript 加入一些新的概念(类) 使javascript实现一些复杂功能变得容易

4.javascript 可以直接同Typescript一起运行,编译器会将Typescript代码转换为javascript

5.Typescript中有静态类型, javascrip则没有

6.TypeScript中每一个数据必须规定其数据类型,JavaScript不要求

7.TypeScript为函数提供了缺省参数值。

8.TypeScript中有模块的概念,可以封装数据 类 函数 声明等信息在模块里面

十、描述引用计数的工作原理和优缺点

原理:设置引用数,判断当前引用数是否为0,引用计数器中引用关系改变时修改引用数字,引用数字为0时立即回收

优点:发现垃圾时立即回收;最大限度减少程序暂停

确定:无法回收循环引用的对象;时间开销大(需要监控引用数字是否变化)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fn() {
    const obj1 = {}
    const obj2 = {}
    obj1.name = obj2
    obj2.name = obj1
    return ''
}
fn()

十一、描述标记整理算法的工作流程

1. 标记整理可以看做是标记清楚的增强

2. 标记阶段的操作和标记清楚一致

3. 清除阶段会先执行整理,移动对象位置

十二、描述V8中新生代存储区垃圾回收的流程

1. 回收过程采用复制算法+标记整理;

2. 新生代内存区分为二个等大小空间;

3. 使用空间为From,空闲空间为To;

4.活动对象存储于From空间;

5. 标记整理后将活动对象拷贝至To

6. From于To交换空间完成释放

7.拷贝过程中可能出现晋升

8. 晋升就是讲新生代对象移动至老生代

9. 一轮GC还存在的新生代需要晋升

10. To空间的使用率超过25%

十三、描述增量标记算法在何时使用及工作原理

首层遍历对象标记结束后,和程序执行的交替执行

垃圾回收会阻塞程序执行

将一整段的垃圾回收拆分成多个小步骤组合完成垃圾回收

标记和程序交替执行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript高频面试题整理
作用域链 作用域就是程序执行到某一个特定部分时,可以访问这一部分的变量或者函数,这些变量或者函数就组成了一个特定的域,称为作用域。 程序执行会有一个环境栈,从全局环境开始,生成一个全局执行环境的关联对象,该对象拥有全局作用域的所有变量和方法。然后程序继续执行,遇到函数,也会生成该函数的一个关联的环境对象,并且将它压入栈中,此时会根据环境栈生成一个作用链,栈顶(作用域链顶端)也就是当时的函数执行环境对象,查找变量时就可以从作用域链顶端开始一直往后。 每一个执行环境都有一个作用域链,他可以访问作用
努力的Greatiga
2022/07/25
4210
Vue开发中常用的ES6新特性
ECMAScript 6,即所谓的现代Javascript,具有强大的功能,例如块作用域、类、箭头功、生成器以及许多其他有用的功能。
前端达人
2021/07/16
1.5K0
由浅入深,66条JavaScript面试知识点
来源:https://juejin.im/post/5ef8377f6fb9a07e693a6061
zz_jesse
2020/07/07
1K0
由浅入深,66条JavaScript面试知识点
【面试】386- JavaScript 面试 20 个核心考点
Javascript是前端面试的重点,本文重点梳理下 Javascript 中的常考基础知识点,然后就一些容易出现的题目进行解析。限于文章的篇幅,无法将知识点讲解的面面俱到,本文只罗列了一些重难点,如果想要了解更多内容欢迎点击https://github.com/ljianshu/Blog。
pingan8787
2019/10/23
4760
【面试】386- JavaScript 面试 20 个核心考点
浅谈js的内存与闭包
主要结合了内存的概念讲了js的一些的很简单、但是又不小心就犯错的地方。 结论:js执行顺序,先定义,后执行,从上到下,就近原则。闭包可以让外部访问某函数内部变量,而且会导致内存泄漏。
lhyt
2022/09/21
4770
浅谈js的内存与闭包
ES6新特性
由于ES6在一些低版本的浏览器上无法运行,需转成ES5之前的版本兼容,以下有几种方案可以自动转换
jinghong
2020/05/09
1K0
ES6新特性
[深入浅出]JavaScript GC 垃圾回收机制
原创不易,未经作者允许禁止转载!! 为什么需要垃圾回收 在C / C++中,跟踪内存的使用和管理内存对开发者来说是很大的负担 JavaScript是使用垃圾回收机制的语言,也就是说执行环境负责在代码执行时管理内存,帮开发者卸下了这个负担 通过自动内存管理实现内存的分配和资源的回收 基本思路很简单,确定哪个变量不会再被使用了,把它的内存空间释放 这个过程是周期性的,意思是这个垃圾回收程序每隔一段时间就会运行一次 像JS中的对象、字符串、对象的内存是不固定的,只有真正用到的时候才会动态分配内存 这些内存需在不
前端LeBron
2021/12/08
1.2K0
[深入浅出]JavaScript GC 垃圾回收机制
浅习一波JavaScript高级程序设计(第4版)p4
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
掘金安东尼
2022/09/19
3580
浅习一波JavaScript高级程序设计(第4版)p4
JS Advance --- ES6语法(二)
在ES6之前,如果我们想要将字符串和一些动态的变量(标识符)拼接到一起,是非常麻烦和丑陋的
玖柒的小窝
2021/10/09
1.2K0
ES6的语法
世间万物皆对象
2024/03/20
1820
2021JavaScript面试题(最新)不定时更新(2021.11.6更新)
js 一共有六种基本数据类型,分别是 Undefined、Null、Boolean、Number、String,还有在 ES6 中新增的 Symbol 类型。 Symbol 代表创建后独一无二且不可变的数据类型,它的出现我认为主要是为了解决可能出现的全局变量冲突的问题。
全栈程序员站长
2022/09/07
2.6K0
简单说说ES6新特性
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript和JS的关系 ECMAScript是标准,JS是实现 类似于HTML5是标准,IE,chrome是实现    例如国家定了医用口罩标准 (需要过滤XX,等等各种参数),咱们买的正规口罩是实现 目前ECMAScript除了JS还没别的实现,所以ECMAScript
IT大咖说
2022/03/21
1.1K0
【JS】676- 1.1w字 | 初中级前端 JavaScript 自测清单 - 2
前言 在《初中级前端 JavaScript 自测清单 - 1》部分中,和大家简单过了一遍 JavaScript 的一些基础知识,没看过的朋友可以回顾一下? 本系列文章是我在我们团队内部的“「现代 Ja
pingan8787
2020/08/11
1.2K0
【JS】676- 1.1w字 | 初中级前端 JavaScript 自测清单 - 2
JS进阶-作用域
定义:局部作用域的意思就是,变量只能在它的代码块或者函数内部访问,而不能在外部访问,局部作用域的变量在函数或代码块执行完后会销毁,不会影响全局作用域变量。
吃猫的鱼Code
2025/02/11
1570
极意 · 代码性能优化之道
代码敲久了,就会对代码的质量格外关注,这里总结了一些在开发中遇到的对代码性能优化的技巧及相关的原理的阐述(主要基于 v8 引擎)。
用户6256742
2024/06/28
1490
极意 · 代码性能优化之道
JavaScript性能优化
内存为什么需要管理呢?当程序执行的时候需要去内存申请一片空间进行使用,如果内存不进行管理释放内存空间,那么内存很容易就会溢出。
用户3045442
2020/08/12
1.2K0
JavaScript性能优化
JavaScript 进阶
引用计数 IE采用的引用计数算法, 定义“内存不再使用”的标准很简单,就是看一个对象是否有指向它的引用。 算法:
小城故事
2023/04/03
1.2K0
JavaScript 进阶
2022高频前端面试题合集之JavaScript篇(上)
解析:该题主要考察就是对 js 中的继承是否了解,以及常见的继承的形式有哪些。最常用的继承就是「组合继承」(伪经典继承)和圣杯模式继承。下面附上 js 中这两种继承模式的详细解析。
程序员法医
2022/12/20
1.2K0
2022高频前端面试题合集之JavaScript篇(上)
JS温故知新
基本类型(值类型): Number(数字),String(字符串),Boolean(布尔),Symbol(符号), null(空),undefined(未定义)在内存中占据固定大小, 保存在栈内存中。
隔壁老陈
2023/02/22
5180
ECMAScript 6 新特性总结
本文作者:IMWeb 张颖 原文出处:IMWeb社区 未经同意,禁止转载 前言 个人感觉ECMAScript 6总体上来说:添加了块级作用域,增加了一些语法糖,增强了字符串的处理,引入Gen
IMWeb前端团队
2018/01/08
1.6K0
相关推荐
JavaScript高频面试题整理
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验