kangkai124 / blog

开发笔记
https://kangkai124.github.io/blog/
MIT License
26 stars 4 forks source link

lydiahallie/javascript-questions里我的错题 #31

Open kangkai124 opened 5 years ago

kangkai124 commented 5 years ago

from https://github.com/lydiahallie/javascript-questions

kangkai124 commented 5 years ago
num的值是多少?
const num = parseInt("7*6", 10);
答案

#### 答案:7 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。 如果被解析参数是数字+非数字字符,则只取前面的可以被转为数值的部分进行转换。

kangkai124 commented 5 years ago
输出结果是什么
(() => {
  let x = (y = 10);
})();

console.log(typeof x);
console.log(typeof y);
答案

#### 答案:"undefined", "number" `let x = y = 10` 实际上是以下的缩写: ```js y = 10; let x = y; ``` 当对 `y` 赋值时,实际上是赋值到了 `window.y`,所以 `window.y` 的值为 10,`typeof y` 为 `'number'`。 但是使用 `let` 对 `x` 声明时,由于块作用域的影响,在 IIFE 函数外面是无法访问到 `x` 的,所以 `typeof x` 为 `'undefined'`。

kangkai124 commented 5 years ago
输出结果是什么
// counter.js
let counter = 10;
export default counter;
// index.js
import myCounter from "./counter";

myCounter += 1;

console.log(myCounter);
答案

#### 答案:Error 一个被引入的模块是只读的,不能去修改引入的模块。

kangkai124 commented 5 years ago

delete 操作符返回一个布尔值,删除成功返回 true,反之返回 false

但是,使用 varconstlet 关键字定义的变量不能使用 delete 删除。

kangkai124 commented 5 years ago
输出是什么
let num = 10;

const increaseNumber = () => num++;
const increasePassedNumber = number => number++;

const num1 = increaseNumber();
const num2 = increasePassedNumber(num1);

console.log(num1);
console.log(num2);
答案

#### 答案:10, 10 `++` 操作符会先返回值,然后再累加。