关于前端:回答一下这-10-个最常见的-Javascript-问题

42次阅读

共计 3941 个字符,预计需要花费 10 分钟才能阅读完成。

作者:Duomly
译者:前端小智
起源:dev

点赞再看,微信搜寻 【大迁世界】 关注这个没有大厂背景,但有着一股向上踊跃心态人。本文 GitHub https://github.com/qq44924588… 上曾经收录,文章的已分类,也整顿了很多我的文档,和教程材料。

为初学者介绍一下这 10 个最常被问到的 JavaScript 问题

在本文中,我收集了对于 Javascript 最常被问到的 10 个问题及其答案。

这 10 个问题大多波及 Javascript 的基础知识,所以如果你刚刚开始学习 JS,最好了解并把握它们并。

这个 10 问题波及 JS 中 闭包 promise 变量晋升 等等。只管这些常识不是很难,然而晓得答案是一件坏事,因为其中一些常常在面试中会被问到。

Javascript 中的闭包是什么?

闭包是关闭在一起的函数的组合,其中外部函数能够拜访其变量和内部函数的变量。

最简略的解释办法就是上例子:

function outer() {
  var name = 'Maria';
  function inner() {console.log(name);
  }
  inner();}
outer();
// 'Maria'

在下面的代码中,你能够看到 inner() 函数能够拜访其父函数变量 name。因而,如果调用outer() 函数,那么 inner() 函数的 console.log() 将返回 name 的值Maria

外部函数能够拜访内部函数参数对象,然而外部函数参数与内部一样,则外部的参数对象会笼罩内部的参数对象。如下所示:

function outer(a, b) {const inner = (a, b) => console.log(a, b);
  inner(1, 2);
}
outer('Alice', 'Mark');
// returns 1, 2

咱们应用闭包的次要起因是返回能够返回其余函数的函数。

Javascript 中的 DOM 是什么

DOM 是文档对象模型,它是网站的面向对象的示意形,能够应用 Javascript 进行批改。

应用 JS 能够操纵 DOM 元素,例如色彩,地位,大小。为了抉择页面的特定元素,Javascript 提供了一些办法:

  • getElementById() – 通过 id 属性抉择一个元素
  • getElementsByName() – 通过 name 属性抉择一个元素
  • getElementsByTagName() – 抉择所选标签的所有元素,
  • getElementsbyClassName() – 抉择特定类名的所有元素

* querySelector() - 通过 CSS 选择器抉择元素。

Javascript 还提供了其余操作元素的办法,而不仅仅是获取元素,比方 appendChild()innerHTML()

Javascript 的 Promise 是什么

Promise 是异步编程的一种解决方案,能够代替传统的解决方案 – 回调函数和事件。ES6 对立了用法,并原生提供了 Promise 对象。作为对象,Promise 有一下两个特点:(1)对象的状态不受外界影响。(2)一旦状态扭转了就不会在变,也就是说任何时候 Promise 都只有一种状态。

Promise 有三种状态,别离是:Pending (进行中), Resolved (已实现), Rejected (已失败)。Promise 从 Pending 状态开始,如果胜利就转到胜利态,并执行 resolve 回调函数;如果失败就转到失败状态并执行 reject 回调函数。

如果 Promise 被解析 (resolved),咱们能够调用then() 办法并应用返回值执行操作。如果被回绝 (rejected),咱们能够应用catch() 办法来处理错误。

解决异步编程的其余办法还有 async/awaitcallbacks

Javascript 中的原型是什么?

原型通常指的是 prototype__proto__这两个原型对象,其中前者叫做显式原型对象, 后者叫做隐式原型对象。

Javascript 对象从原型继承办法和属性,而 Object.prototype 在继承链的顶部。Javascript prototype 关键字还能够用于向构造函数增加新值和办法。

来看看事例:

function Animal(name, kind, age) {
  this.name = name;
  this.kind = kind;
  this.age = age;
}

Animal.prototype.ownerName('Mark');

能够看到,通过应用原型,咱们可能将 ownerName 属性增加到 Animal() 构造函数中。

Javascript 的 变量晋升 是什么

晋升 是一种机制,它将所有申明的变量和函数晋升到它们部分作用域的顶部,如果变量和函数被搁置在全局作用域,则会被晋升到全局作用域的顶部。

Javascript 中,能够在变量被应用后在申明它。

晋升 用于防止在变量或函数有在没有定义之前就执行导致的 undefined 谬误。

name = 'Ted';
console.log(name);
var name;
// 'Ted'


var name;
name = 'Ted';
console.log(name);
// 'Ted';

应用 var 申明的变量,如果没有赋值,则默认会被初始化为 undefined, letconst 则不会。另外,须要留神的是,在申明 const 时,必须同时初始化它,因为前面不可在更改它。

Javascript 中的对象是什么

对象只是一种非凡的数据。对象领有属性和办法。JavaScript 中的所有事物都是对象,如: 字符串、数值、数组、函数等。

对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;

对象的办法 :可能在对象上执行的动作。例如,表单的“提交”(Submit),工夫的“获取”(getYear) 等;

属性只是简略的值,而办法是能够在对象上执行的操作。

var student = {
  firstName: 'Alice',
  lastName: 'Jones',
  age: 21,
  sayHi: () => {return 'Hi, I am' + this.firstName;}
}

在下面的代码中,你能够看到 Student 对象,其中蕴含三个属性和一个办法。

Javascript 中的函数是什么

在 javascript 中函数是一段能够被执行或调用任意次数的 JavasScript 代码, 在数据类型中属于"function"。函数也领有属性和办法,因而函数也是对象。

在 Javascript 中函数定义函数申明或函数表达式由关键字 function 开始。在定义函数时,能够在函数名前面的括号中增加一些参数。当咱们调用函数时,括号中传递的值称为参数。

function calculate(x, y) {return x * y;}

calculate(2, 5);

Javascript 中的纯函数是什么

如果函数的调用参数雷同,则永远返回雷同的后果。它不依赖于程序执行期间函数内部任何状态或数据的变动,必须只依赖于其输出参数。

顾名思义,纯函数跟咱们初中数学的根本函数一样,遵循肯定的映射关系,输出决定输入,一个输出只能对应一个输入。不同的输出能够有雷同的输入,然而雷同的输出不能有不同的输入

一个函数,如果合乎以下两个特点,那么它就能够称之为 纯函数:

  • 对于雷同的输出,永远失去雷同的输入
  • 没有任何可察看到的副作用

Javascript 中的构造函数是什么

构造函数是一种非凡的办法,用于初始化和创立 Javascript 中的对象。

JavaScript 中的构造函数和其它语言中的构造函数是不同的。通过 new 关键字形式调用的函数都被认为是构造函数。

在构造函数外部,this 指向新创建的对象 Object。这个新创建的对象的 prototype 被指向到构造函数的 prototype

如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象,也就是新创建的对象。

const Person = (name, age) => {
  this.name = name;
  this.age = age;
}

var man = new Person('Mark', 23);
console.log(man);
// {name: 'Mark', age: 23}

在下面的代码中,我创立了一个 Person 构造函数,在上面的代码中,创立了一个名为 man 的新变量,并基于 Person 构造函数创立了一个新对象。

Javascript 类是什么?

自从 ES6 引入以来,咱们能够在 Javascript 中应用类。类是一种函数,咱们应用关键字 class 代替 function 关键字来初始化它。

除此之外,咱们还必须在类外部增加 constructor() 办法,该办法在每次初始化类时都会调用。

constructor() 办法外部,咱们增加了类的属性。要基于现有的类创立另一个类,咱们能够应用 extends 关键字。

在 JavaScript 中应用类的一个很好的例子是 React 框架,它是类的组件。

总结

在本文中,我收集了开发者常常问的 10 个 Javascript 问题,并给出答案,答案不是惟一,这里只是本人的一些见解,心愿本文能给初始化者带来一些帮忙。

人才们的 【三连】 就是小智一直分享的最大能源,如果本篇博客有任何谬误和倡议,欢送人才们留言,最初,谢谢大家的观看。


原文:https://dev.to/duomly/10-most…

代码部署后可能存在的 BUG 没法实时晓得,预先为了解决这些 BUG,花了大量的工夫进行 log 调试,这边顺便给大家举荐一个好用的 BUG 监控工具 Fundebug。

交换

文章每周继续更新,能够微信搜寻 【大迁世界】 第一工夫浏览,回复 【福利】 有多份前端视频等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 曾经收录,欢送 Star。

正文完
 0