10个非常基础的Javascript面试问题

简介: 10个非常基础的Javascript面试问题

1.什么是Javascript?


Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。


根据MDN,JavaScript(通常缩写为JS)是一种轻量级的,解释性的,面向对象的语言,具有一流的功能,并且最著名的是Web页面的脚本语言,但它也用于许多非浏览器环境中。它是一种基于原型的多范式脚本语言,它是动态的,并支持面向对象,命令式和函数式编程样式。


2.什么是DOM


DOM代表文档对象模型。加载网页后,浏览器会使用HTML和CSS文件创建一个DOM。DOM由节点和元素表示。您可以使用javascript处理DOM。它是一个树状结构。


3. JS代码如何执行


要回答的问题有点大。但是我们可以简单地说一下。Javascript在浏览器上运行。几乎每个浏览器都有一个JavaScript引擎。V8是其中最受欢迎的。Chrome使用V8引擎。另一方面,Firefox使用Spider-Monkey引擎。


4. ==和===之间的区别


如果我这么简单地说,==仅检查两个值是否相同。它不检查这些值的类型。查看以下代码:


if(2=="2"){
 console.log("true")
} else {
console.log("false")
}


上面的代码将记录为true。因为它将2和“ 2”视为相等,因为它不检查类型。


相反,===同时检查类型和质量。例如:


if(2==="2"){
 console.log("true")
} else {
console.log("false")
}


这将记录为false。因为2和“ 2”的值相等,但是它们的类型不同。


5.Null(空值)与Undefined(未定义)


通常,null表示空值和不存在的值,而undefined表示已声明但尚未定义的值。尽管您也可以显式地将undefined设置为变量。


var n;
console.log(typeof(n)); // undefined
var n = null;
console.log(typeof(n)); // object


有趣的是JS中的对象类型为null。


6. Var vs Let vs Const


在ES6之前,var是声明变量的唯一方法。但是现在我们有更多选择。


有一个术语作为范围。范围是指可以使用这些变量的位置。var声明是全局范围的或函数/局部范围的。


可以挂起Var,我们将在几秒钟后讨论。但是,现在让let对于变量声明更可取。当不需要稍后在代码中更改变量时,可以使用const。为了获得两者之间的区别,您可以阅读下面的文章,我认为它非常有用。


7.变量提升(Hoisting)


在javascript中,可以在声明变量之前使用变量。物理上移到代码顶部的变量和函数声明的概念称为变量提升。


console.log(num); // Returns undefined, as only declaration was hoisted, no initialization has happened at this stage
var num; // Declaration
num = 6;


那么,let和const变量是否不会被悬挂?答案要复杂得多。所有声明(函数,var,let,const和class)都在JavaScript中吊起,而var声明使用undefined初始化,但是let和const声明保持未初始化。


8.全局变量与局部变量


在javascript中,范围分为两种方式。全局和局部。

在函数中声明的变量称为局部作用域。该变量不能在函数外部访问。相反,在函数外部声明的变量称为全局范围。可以在函数内部访问它。


var genre= "superhero" //global scope
// code here can't use superhero but genre
function myFunction() {
  var superhero = "Batman"; // local scope
  // code here CAN use superhero and genre
}


9.闭包(Closure)


闭包使我们可以从内部函数访问外部函数的范围。可以通过从一个函数返回另一个函数来创建它。它为每个实例创建一个封闭的环境。例如:


function sum(x) {
  return function(y) {
    return x + y;
  };
}
var add5 = sum(5);
var add10 = sum(10);
console.log(add5(6));  // 11
console.log(add10(6)); // 16


这里的add5和add10都是闭包。它们共享相同的定义,但存储不同的环境。


10.回调函数


根据MDN,回调函数是一个作为参数传递给另一个函数的函数,然后在外部函数内部调用该回调函数以完成某种例程或操作。例如


function greeting(name) {
  console.log('Hello ' + name);
}
function greetEmployee(name,callback) {
  callback(name);
}
greetEmployee("Dwight",greeting);

在这里,greeting函数已在greetEmployee函数内部使用。这就是我们所谓的回调函数。


感谢阅读本文。希望这能帮助到你。


目录
相关文章
|
3月前
|
JSON JavaScript 前端开发
Javascript基础 86个面试题汇总 (附答案)
该文章汇总了JavaScript的基础面试题及其答案,涵盖了JavaScript的核心概念、特性以及常见的面试问题。
63 3
|
3月前
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
4月前
|
JavaScript 前端开发
常见的JS面试题
【8月更文挑战第5天】 常见的JS面试题
67 3
|
1月前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
38 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
2月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
4月前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
47 0
|
4月前
|
JavaScript 前端开发 程序员
JS小白请看!一招让你的面试成功率大大提高——规范代码
JS小白请看!一招让你的面试成功率大大提高——规范代码
|
4月前
|
JavaScript 前端开发
每天一道面试题——JavaScript的this指向【一】
每天一道面试题——JavaScript的this指向【一】
72 0
|
4月前
|
存储 JavaScript 前端开发
JS浅拷贝及面试时手写源码
JS浅拷贝及面试时手写源码
|
4月前
|
JavaScript 前端开发
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?