Skip to content
通过一些常见问题或容易忽略的问题来系统学习JavaScript,每周更新。
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images
1.1 MemoryHeap.md
README.md

README.md

Study js from questions

js.png

  • 2019.08.02:1.1.1~1.1.2
  • 2019.08.09:1.1.3~1.1.4

目录

1 ECMAScript-V8

1.1 Memory Heap/Stack(内存堆/栈)

查看详细内容 1.1 MemoryHeap.md>>

1.1.1 基本数据类型

  • Q1.typeof null === typeof {}的结果及其原因
  • Q2.var str1 = 'string', str2 = String('string'), str3 = new String('string');,变量str1str2str3结果是相同的吗?如果不相同可能通过处理使其相同吗?
  • Q3.分别说出以下比较的结果及原因:
console.log(3.0 === 3); 
console.log(+0 === -0); 
console.log(+Infinity === -Infinity);
console.log(NaN === NaN);
  • Q4.什么是Number的安全整数?以下运算操作的结果是什么?
var num = Math.pow(2, 60);
console.log(num);
num++;
console.log(num);
num -= Math.pow(2, 59);
console.log(num);
  • Q5.以下代码数据赋值运行都会报错吗?顺带说说undefinednull的区别
var undefined = 'undefined';
var null = 'null';
  • Q6.以下代码执行输出的结果是什么?
var x = new Boolean(false);
if (x) {
    console.log('true');
} else {
    console.log('false');
}
  • Q7.NaN、null、undefined、true/false、Infinity中哪些能通过全局属性取值?如浏览器window.NaN、nodeJswindow.null

  • Q8.除了使用模板字符串外,如何通过最快的方式解决以下字符串赋值报错的问题

var longString = "This is a long String
i need to wrap across multiple lines and don't want to keep in a row
because it's unreadable.";
  • Q9.关于Symbol,为什么Symbol()不能用new来定义?consol.log(Symbol.length, String.length, Number.length)的输出是什么?Symbol能转换为数值吗?

1.1.2 引用类型

  • Q1.分别new Array(4)[,,,]定义数组的结果是一样的吗?

  • Q2.数组最大长度是多少?超出会如何

  • Q3.console.log(Date.length, Function.length, Array.length, Object.length)的输出是什么?

1.1.3 类型转换与相等比较

  • Q1.以下语句会报错吗?如果报错如何最简单进行调整?
var numstr1 = 6.6.toFixed(2);
var numstr2 = 6.toFixed(2);

Q2.2.55.toFixed(1) === '2.6'的判断输出是什么

  • Q3.说出以下转换数字数值转换的结果:
// parseInt
parseInt('123.456.789');
parseInt('123abc');
parseInt('abc123');
parseInt(123.456, 36);
parseInt(123.456, 2);
parseInt(123.456, 1);

// parseFloat
parseFloat('123.456.789');
parseFloat('123abc.456.789');

// Number
Number('123a.456');
Number('0x11');
Number('0b11');
Number('0o11');

// Math.round
Math.round('123a.456');
  • Q4.parseInt()/parseFloat()/Number()/Math.round()做数值转换时的效率排行顺序,可以的话解释下原因并说明相关应用场景。

  • Q5.介绍一下Number.prototype.toFixed()Number.prototype.toPrecision()的应用场景

  • Q6.以下双等判断的返回值是什么?

console.log([] == ![]);
console.log([] == '');
console.log('123.000000000000000000000000001' == 123);
console.log(false == []);
console.log(false == 0);
console.log(false == null);
console.log(Symbol('a') == false);

1.1.4 动态语言和Duck typing

  • Q1.请描述以下加法计算结果
1 + null;
1 + '2';
null + false;
false + undefined;
true + false;
[] + [];
{} + {};
{} + [];
[] + {};
{} + true;
[] + true;
'' + Symbol();
  • Q2.let a = [1];,如何在不删除/增加数组项的情况下使a == 'abc'以及a++ > 456同时成立?

  • Q3.有一个对象obj,var obj = { 0: 1, 1: 2, 2: 3, length: 3},如何给它赋予数组的所有方法,如map、reduce、filter等等等等。

  • Q4.请试着解释为什么解构字符串会返回数组,如var str = 'abc'; ...str -> ['a', 'b', 'c']。为什么直接执行会报错,如...'abc'

  • Q5.直接修改引用类型的valueOf()方法或toString()方法会有什么后果?举例说明

1.1.5 赋值和变量提升

  • Q1.以下赋值操作会有问题吗?为什么
// 操作1
Object.defineProperty(window, 'test', {
	writable: true,
	value: 123
})
let test = 456;

// 操作2
window.test2 = 'abc';
let test2 = 'def';

1.1.6 执行上下文

1.1.7 作用域和作用域链

1.1.8 闭包和IIFE

1.1.9 浅拷贝、深拷贝

1.1.10 垃圾回收

1.2 call Stack(调用堆栈)

1.2.1 调用堆栈

1.2.2 递归和尾递归

1.2.3 异步与回调

1.2.4 消息队列

1.2.5 事件循环

1.2.6 Memoization

2 语法

2.1 操作符

2.1.1 算数操作符和赋值操作符

2.1.2 按位操作符

2.1.3 逗号操作符和圆括号操作符

2.1.4 解构和展开

2.1.5 new和in

2.1.6 typeof和instance

2.1.7 super

2.2 表达式和语句

2.2.1 block作用域

2.2.2 break和continue

2.2.3 被忽视的default

2.2.4 for/for...in/for...of

2.3 函数、this和call/apply/bind

2.3.1 定义函数

2.3.2 arguments

2.3.3 this

2.3.4 call/apply/bind

2.4 [[prototype]]

2.4.1 __ptoto__和prototype

2.4.2 原型链

2.5 内置函数

2.5.1 Array高阶函数

2.5.2 Object.seal()和Object.freeze()

2.5.3 Object.create()和Object.assign()

2.5.4 Object.defineProperty()和Object.defineProperties()

2.6 类和继承

2.7 Promise

2.8 Error

3 内置方法/对象

3.1 内置方法

3.1.1 setTimeout()、setInterval()、requestAnimationFrame()、setImmediate()

3.1.2 ajax和XMLHttpRequest

3.2 内置对象

3.2.1 Date

3.2.2 RegExp

4 DOM

4.1 属性

4.2 事件

5 BOM

5.1 缓存

6 Webkit

7 Babel


反馈和转载请联系作者:michealwayne@163.com

You can’t perform that action at this time.