前言
为什么学习JavaScript?
JavaScript的应用已经覆盖了你的生活。
网页交互: (现代网页都使用JavaScript做交互)
跨平台应用开发: (Typora , Visual Studio Code-typescript(Js的超集) , Mortix , ant)
前后端开发: ( Vue.js jQuery.js Node.js )
如果一种语言满足:
需求大,岗位多,跨平台,生态好...
你没得选,只有JavaScript满足。
JavaScript简介
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
JavaScript在1995年由Netscape公司的[Brendan Eich](https://baike.baidu.com/item/Brendan Eich),在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,商业竞争Java火所以名字差不多,因此取名为JavaScript,跟Java没有任何关联。但实际上它的语法风格与Self及Scheme较为接近。
JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了ECMAScript 的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为ECMAScript 6 或者ES6.
微软抄袭了苹果 - 抄袭JS(JScript)-网景公司知道自己干不过微软-捐了自己的JS版权-ECMA国际
JavaScript组成部分
graph LR
A[ECMAScript,JS标准] --- B[DOM,处理网页内容的方法和接口] --- c[BOM,与浏览器交互的方法和接口]
ECMAScript:Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。
DOM:DocumentObjectModel(文档操作模型)W3C标准的操作html文档和xml文档的接口
BOM:BrowserObjectModel (浏览器操作模型)浏览器对象模型提供可以与浏览器窗口互动的对象结构。
JavaScript特性
JavaScript脚本语言具有以下特点:
(1)脚本语言。JavaScript是一种解释=脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的xx类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。
不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户Duan脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。
而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户Duan进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。
强类型or弱类型
编程语言专家 Benjamin C. Pierce,《Types and Programming Languages》和《Advanced Types and Programming Languages》的作者,曾说:
“我花了几个星期…试着弄清楚“強类型”、“静态类型”、“安全”等术语,但我发现这异常的困难…这些术语的用法不尽相同,所以也就近乎无用。”
大致而言,“強类型”隐含着编程语言对容许混合情况出现加上了严格的限制,以避免程式码以无效的资料使用方式编译或运行。例如,整数除法运算不可用于字串;链表上的运算步骤不可用于数字。然而,这些限制的本质和效力是极易改变的。
JavaScript编程
JavaScript是一种脚本语言,其源代码在发往客户Duan运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}︰
console.log("hello JS");//这是正确的
console.logg("hello JS");//这是错误的,并且到这里会停下来
/*解决办法*/
try{console.log("hello JS");}catch(e){}//这是正确的
try{console.logg("hello JS");}catch(e){}//这是错误的,但是到这里不会停下来,而是跳过
Javascript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译),但由于V8的核心部分多数用Javascript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。
JavaScript版本
JavaScript已经被Netscape公司提交给ECMA制定为标准,称之为ECMAScript,标准编号ECMA-262。符合ECMA-262 3rd Edition标准的实现有:
- Microsoft公司的JScript.
- Mozilla的JavaScript-C(C语言实现),现名SpiderMonkey
- Mozilla的Rhino(Java实现)
- Digital Mars公司的DMDScript
- Google公司的V8
- WebKit
年份 |
名称 |
描述 |
1997 |
ECMAScript1 |
第一个版本 |
1998 |
ECMAScript2 |
版本变更... |
1999 |
ECMAScript3 |
添加正则表达式 添加 try/catch... |
|
ECMAScript4 |
没有发布 |
2009 |
ECMAScript5 |
添加 "strict mode" 添加 JSON 支持... |
2011 |
ECMAScript5.1 |
版本变更... |
2015 |
ECMAScript6 |
添加类和模块... |
2016 |
ECMAScript7 |
增加指数运算符 (**) 增加 Array.prototype.includes... |
2017 |
ECMAScript8 |
字符串填充... |
2018 |
ECMAScript9 |
异步函数,异步迭代... |
2019 |
ECMAScript10 |
flat()嵌套数组展开为扁平数组,递归数组,flat() |
ECMAScript 6 也称为 ECMAScript 2015。
ECMAScript 7 也称为 ECMAScript 2016。
所有浏览器都完整的支持ECMAScript 5.1。特别古老的浏览器也支持到了es3
扩展阅读
JavaScript是不是通过编译语言提供功能
检查浏览器ES6支持度
JavaScript入门准备
html5,css(选择器,盒模型,定位搞懂就行) 2天左右就可以了。
推荐学习网站
工具准备: 浏览器(推荐火狐开发者版本)
编辑器:VSCODE(微软),HBuilder X(国产),sublime text3
字体:Source Code(adobe 公司专门做的一款写代码的等宽字体)