1. JS概述
1.1 JavaScript诞生的初衷
- 最初的目的:判断客户端的输入(以前的网速慢)
- 现在的意义:
- 页面特效(PC端的网页效果)
- 移动端(移动Web和APP)
- 异步和服务器交互
- 服务端开发(NodeJs)
1.2 JavaScript弱类脚本语言
- 解析执行与编译执行
- 编译执行:把代码编译成CPU认识的语言文件,然后整体运行
- 解析执行:一行一行解析,解析一行执行一行
- 弱类脚本语言:弥补编译语言的不足而存在的,作为补充语言,不用编译
- 强类型语言:简单理解定义一个变量,可以有多种数据类型
1.3 JavaScript的历史
- 当时工作于 Netscape 的 Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。Netscape 与 Sun 及时完成 LiveScript 实现。就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。Netscape 的赌注最终得到回报,JavaScript 从此变成了因特网的必备组件。
- 三足鼎立
- 因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军浏览器,发布了 IE 3.0 并搭载了一个 JavaScript 的克隆版,叫做 JScript(这样命名是为了避免与 Netscape 潜在的许可纠纷)。微软步入 Web 浏览器领域的这重要一步虽然令其声名狼藉,但也成为 JavaScript 语言发展过程中的重要一步。
- 在微软进入后,有 3 种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。与 C 和其他编程语言不同的是,JavaScript 并没有一个标准来统一其语法或特性,而这 3 中不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言的标准化显然已经势在必行。
1.4 JavaScript的组成
- ECMAScript:JS的语法规范
- DOM:JS操作网页上元素的API
- BOM:JS操作浏览器部分功能的API
1.5 输出语句
- console.log(“内容”)在控制台打印输出内容
- document.write(“内容”)在页面书写内容
- alert(“内容”)弹窗显示内容
1.6 注释
- 单行注释:
//,快捷键:ctrl+/ - 多行注释:
/**/,快捷键:/* */ - 方法注释:/@params/
1.7 引入方式
- 内嵌式:
<script>console.log('hello')</script> - 外链式:
<script src="demo.js"></script> - script标签异步加载属性
- 无defer、async
- 立即加载
- 立即执行
- 阻塞
- async
<script src='1.js' async></script>- 不阻塞
- 异步加载:后续文档的加载与script脚本加载,并行进行
- 执行1.js时,HTML暂停解析
- 多个async脚本不能保证加载顺序,不适用于考虑依赖的应用场景
- defer
<script src='2.js' defer></script>- 不阻塞
- 异步加载:仅加载不执行,后续文档加载与script脚本加载,并行进行
- 所有元素解析完成之后,DOMContentLoaded事件触发之前完成,因此会按照顺序执行
- 存在多个defer属性的脚本时,执行顺序与加载顺序一致
- 无defer、async
2. 变量
2.1 变量的释义
- 变量是在计算机中存储数据的一个标识符
- 变量可以在声明的时候赋值,也可以稍后赋值
- 变量可以在一行上定义多个变量
2.2 命名规则
- 驼峰命名:getElementById
- 变量命名必须以字母或是下标符号”_”或者”$”为开头。
- 变量名长度不能超过255个字符。
- 变量名中不允许使用空格,首个字不能为数字。
- 不用使用脚本语言中保留的关键字及保留符号作为变量名。
- 变量名区分大小写。(javascript是区分大小写的语言)
- 汉语可以作为变量名。但是不建议使用!!!
- 关键字: