10个非常基础的 Javascript 问题
本文正在参与【[面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~
本文特别适合那些正在寻找 Javascript 相关开发工作的初学者。我搜索了许多关于 Javascript 的面试问题,这 10 个对我来说最重要,让我们深入研究一下。
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" //全局范围 // 这里的代码不能使用 superhero,只能用 genre function myFunction() { var superhero = "Batman"; // 局部范围 // 这里的代码可以使用 superhero 和 Batman }
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 函数内部使用。这就是我们所谓的回调函数。
感谢阅读本文,希望这能帮助到你。另外希望大家能够给海海 点赞+收藏+关注 ,你的支持是海海更新的动力!后面我会持续分享面试经验 & 前端相关的专业知识。
最后祝大家都能找到满意的实习和 offer!