关于javascript:所以-JavaScript-到底是什么我居然懵了????????

前言

援用《JavaScript 高级程序设计第四版》中说的话——“从简略的输出验证脚本到弱小的编程语言,JavaScript 的崛起没有任何人预测到。它很简略,学会用只有几分钟;它又很简单,把握它要很多年。要真正学好用好 JavaScript,了解其本质、历史及局限性是十分重要的”。

面试官:JavaScript 是什么?
我:em… JavaScript 就是 JavaScript… ????

试想一下,如果面试官问你:JavaScript 是个啥?你会怎么答复呢?说实话,听到这个问题的时候我的脑子是有一瞬间是空白的。咱们学了这么久的前端,连最简略的 “JavaScript 是什么?” 这个问题都不能跟面试官马上说出个所以然。明天咱们就这个问题来聊一聊,当面试官问你 JavaScript 是什么的时候,你能够从哪几个点切入,尽可能说多、说全并且给面试官留下一个好印象。

JavaScript 的定位是什么?

1. JavaScript 是脚本编程语言

为什么是脚本编程语言呢?咱们先来简略看看对于 JavaScript 问世的风风雨雨,一句话带过就是,1995 年网景公司为了解决 页面中简略的表单验证时客户端和服务端通信时延 推出了的一款叫做 JavaScript 的客户端脚本语言并且在过后获得了很大的成绩,这时微软决定向 IE 投入更多资源,针对性推出 JScript,再到 Ecma (欧洲计算机制造商协会)推出 ECMAScript (发音为“ek-ma-script”)国内标准化了两门语言,来解决两个版本并存问题。

脚本语言无能啥呢?它能够在网页上实现简单的性能,包含操作页面中的 DOM 元素、CSS 款式,能实现交互式的地图,2D/3D 动画,滚动播放的视频等等。JavaScript 在它所在的宿主环境中具备十分弱小且灵便的能力,给开发人员提供了更多的可能性。

2. JavaScript 是弱类型语言

这意味着变量能够被隐式地转换为另一个类型。类型的暗藏转换,给 JavaScript 带了了肯定的灵活性,然而也减少了规定的复杂度与产生谬误的可能性。

  • 二元运算符 + 会把两个操作数转换为字符串,除非两个操作数都为数字类型。这是因为 + 也能够用来连贯字符串。
  • 二元操作符 - 会把两个操作数转换为数字类型。
  • 一元操作符,包含 + 和 -,都会把操作数转换为数字。
console.log(1 + '2' === '3')
// true
console.log('3' - '1' === 2)
// true
console.log(+'1' === 1)
// true
console.log(-'1' === -1)
// true

3. JavaScript 是动静类型的

  • 正如大部分脚本语言,其类型与值而不是与变量关联。例如变量能够为数值,随后又可被赋值为字符串。
let a = 233
a = '弹铁蛋同学'
console.log(a)
// '弹铁蛋同学'
  • 能够在运行时间接执行 Javascript 语句
eval("console.log('弹铁蛋同学')")
// '弹铁蛋同学'

4. JavaScript 是单线程的

JavaScript 须要和页面进行交互,操作 DOM 等,如果是多线程的话,会带来很简单的同步问题。比方,假设 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上增加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?所以这决定了它只能是单线程,

5. JavaScript 解释型语言

解释型语言(英语:Interpreted language)是一种编程语言类型。这种类型的编程语言,会将代码一句一句间接运行,不须要像编译型语言(Compiled language)一样,通过编译器后行编译为机器代码,之后再运行。

6. JavaScript 具备良好的跨平台性

跨平台个性,在绝大多数浏览器的反对下,能够在多种平台下运行(如 WindowsLinuxMacAndroidiOS 等)。

JavaScriptECMAScript 有什么区别,以及和 DOMBOM 的关系?

首先简略概括 ECMAScriptDOMBOM 三者概念吧。

DOM

DOM(文档对象模型),提供了与网页内容交互的 办法接口DOM 将整个页面形象为一组分层节点。HTMLXML 页面的每个组成部分都是一种节点,蕴含不同的数据。DOM 通过创立示意文档的树,让开发者能够得心应手地管制网页的内容和构造。应用 DOM API,能够轻松地删除、增加、替换、批改节点。

<html>
        <head>
            <title>Sample Page</title>
        </head>
        <body>
            <p> Hello World!</p>
        </body>
</html>

BOM

BOM(浏览器对象模型),提供了与浏览器交互的 办法接口BOM 次要针对浏览器窗口和子窗口(frame)。应用 BOM,开发者能够操控浏览器显示页面之外的局部, 比方:

1)弹出新浏览器窗口的能力;
2)挪动、缩放和敞开浏览器窗口的能力;
3)navigator 对象,提供对于浏览器的详尽信息;
4)location 对象,提供浏览器加载页面的详尽信息;
5)screen 对象,提供对于用户屏幕分辨率的详尽信息;
6)performance 对象,提供浏览器内存占用、导航行为和工夫统计的详尽信息;
7)对浏览器存储相干的操作比方 cookiessessionStorage localStorage 等;
8)其余自定义对象,如 XMLHttpRequestIEActiveXObject

ECMAScript

ECMAScript 形容了 JavaScript 的语法和根本对象:1)语法;2)类型;3)语句;4)关键字;5) 保留字;6)操作符;7)全局对象;

ECMA 公布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的规范,并将这种语言称为 ECMAScript,这个版本就是 1.0 版,所以一句话形容就是,ECMAScript 是一套标准,JavaScript 则是 ECMAScript 一种实现。为什么说是一种实现呢,因为 Adobe ActionScript 同样也实现了 ECMAScriptJScript 也同样实现了 ECMAScript

[ES 版本相干]

关系

所以在简略理解了下面几个要害的概念之后咱们就很容易得出他们之间的关系啦!在《JavaScript 高级程序设计第四版》中有这样一张图,将 JavaScriptECMAScriptDOMBOM 四者的关系形容的十分清晰。

咱们得出结论: ECMAScript、 DOM 、BOM 是 JavaScript 的组成部分。

总结

所以看到文章最初,当面试官问:”JavaScript 是什么“ 的时候,咱们就晓得从哪开始说,从哪些方面开始讲。所以如果咱们把这篇文章的要点都和面试官说分明了的话,置信能够给面试官留下一个不至于太蹩脚的印象????

  • JavaScript 的定位

    • JavaScript 是脚本编程语言
    • JavaScript 是弱类型语言
    • JavaScript 是动静类型的
    • JavaScript 是单线程的
    • JavaScript 解释型语言
    • JavaScript 具备良好的跨平台性
  • JavaScriptECMAScript 的区别,以及和 DOMBOM 的关系

    • DOM(文档对象模型),提供了与网页内容交互的 办法接口
    • BOM(浏览器对象模型),提供了与浏览器交互的 办法接口
    • ECMAScript 形容了 JavaScript 的语法和根本对象

最初还是援用结尾那段话,”要真正学好用好 JavaScript,了解其本质、历史及局限性是十分重要的“ ,一起共勉~

  • 更多优质乏味的文章,请佛系关注公众号「前端铁蛋」啦
  • Github 原文

参考

  • 《JavaScript 高级程序设计第四版》
  • 维基百科 JavaScript
  • ECMAScript 6 简介

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理