JavaScript 最初的目的是为了“赋予网页生命”。它们可以写在 HTML 中,在页面加载的时候会自动执行。它和 Java 之间没有任何关系。它们不需要特殊的准备或编译即可运行,这种编程语言称之为脚本。
现在,JavaScript 不仅仅是在浏览器内执行,也可以在服务端执行,甚至还能在任意搭载了 JavaScript 引擎 的设备中都可以执行。浏览器中嵌入了 JavaScript 引擎,有时也称作 JavaScript 虚拟机。
语法学习网站:https://www.runoob.com/js/js-intro.html
用途
1.搭配CSS/HTML作为动态网页在浏览器中运行
2.基于Node.js技术进行服务器端编程。
3.测试
1 浏览器中的 JavaScript 可以完成下面这些事:
- 在网页中插入新的 HTML,修改现有的网页内容和网页的样式。
- 响应用户的行为,响应鼠标的点击或移动、键盘的敲击。
- 向远程服务器发送网络请求,下载或上传文件(所谓 AJAX 和 COMET 技术)。
- 检测访客的浏览器信息,获取或修改 cookie,向访问者提出问题、发送消息。
- 在数据被提交到服务器之前验证数据。
不同的引擎有不同的“代号”,例如:
- V8 —— Chrome 和 Opera 中的 JavaScript 引擎。
- SpiderMonkey —— Firefox 中的 JavaScript 引擎。
- ……还有其他一些代号,像“Trident”,“Chakra”用于不同版本的 IE,“ChakraCore”用于 Microsoft Edge,“Nitro”和“SquirrelFish”用于 Safari,等等。
2 基于Node.js技术进行服务器端编程。
- 能读、写、复制及执行用户磁盘上的文件或程序。JavaScript 有很多方式和照相机/麦克风或者其他设备进行交互.
- JavaScript 通过互联网可以轻松地和当前网页域名的服务器进行通讯。
3 测试
- 通过JS来实现对Web元素的操作,UI测试。
- JavaScript可以执行接口测试。
- JavaScript有不同的测试框架
JavaScript 演化变种
针对不同的需求出现了很多JavaScript 进阶版本语言,但是这些语言在浏览器中执行之前,都会被转化成 JavaScript。
这些编程语言的例子有:
- CoffeeScript 是 JavaScript 的语法糖,它语法简短,明确简洁。通常使用 Ruby 的人喜欢用。
- TypeScript 将注意力集中在增加严格的数据类型。这样就能简化开发,也能用于开发复杂的系统。TypeScript 是微软开发的。
- Flow 也添加了数据类型,但是以一种不同的方式。由 Facebook 开发。
- Dart 是一门独立的语言。它拥有自己的引擎用于在非浏览器环境中运行(如:手机应用),它也能被编译成 JavaScript 。由 Google 开发。
JavaScript 语法
1 变量
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
//JavaScript 数据类型
var length = 16; // Number 通过数字字面量赋值
var points = x * 10; // Number 通过表达式字面量赋值
var lastName = "Johnson"; // String 通过字符串字面量赋值
var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值
var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值
JavaScript 变量的生存期
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
JavaScript 对象是属性变量的容器,对象键值对的写法类似于:
- PHP 中的关联数组
- Python 中的字典
- C 语言中的哈希表
- Java 中的哈希映射
- Ruby 和 Perl 中的哈希表
2 对象方法和函数
<script>
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
//对象方法
fullName : function()
{
return this.firstName + " " + this.lastName;
}
};
document.getElementById("demo").innerHTML = person.fullName();
</script>
//函数
<script>
function myFunction()
{
alert("Hello World!");
}
</script>
3 JavaScript 正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。
语法:
/正则表达式主体/修饰符(可选)
修饰符:
- i 执行对大小写不敏感的匹配。
- g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
- m 执行多行匹配
var patt = /runoob/i
/runoob/i 是一个正则表达式。
runoob 是一个正则表达式主体 (用于检索)。
i 是一个修饰符 (搜索不区分大小写)。
var patt = /e/;
patt.test("The best things in life are free!");
/e/.test("The best things in life are free!");
4 JavaScript 错误
- try 语句测试代码块的错误。
- catch 语句处理错误。
- throw 语句创建自定义错误。
- finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
语法:
try {
... //测试代码块
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
语法
throw exception
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "值是空的";
if(isNaN(x)) throw "值不是一个数字";
x = Number(x);
if(x > 10) throw "太大";
if(x < 5) throw "太小";
}
catch(err) {
message.innerHTML = "错误: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}