irpas技术客

JavaScript教程带你快速入门_OIqng

未知 2187

JavaScript 简介

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。

JavaScript 是基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JavaScript 用法

HTML 中的脚本必须位于 标签之间。

脚本可被放置在 HTML 页面的 和 部分中。

<script>标签

<script> 和 </script> 会告诉 JavaScript 在何处开始和结束。

<script> 和 </script> 之间的代码行包含了 JavaScript:

<script> alert("我的第一个 JavaScript"); </script>

<body> 中的 JavaScript

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> alert("我的第一个 JavaScript"); </script> </body> </html>

JavaScript 函数和事件

上面代码中的 JavaScript 语句,会在页面加载时执行。如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数,如:用户点击按钮时执行代码。

<head> 中的 JavaScript 函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> function myFunction() { alert("我的第一个 JavaScript函数"); } </script> </head> <body> <button type="button" onclick="myFunction()">按钮</button> </body> </html>

点击按钮时调用JavaScript函数如下图 <body> 中的 JavaScript 函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <button type="button" onclick="myFunction()">按钮</button> <script> function myFunction() { alert("我的第一个 JavaScript函数"); } </script> </body> </html>

效果一样如下图 外部的 JavaScript

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="firstScript.js"></script> </head> <body> <button type="button" onclick="myFunction()">按钮</button> </body> </html>

firstScript.js代码如下

function myFunction(){ alert("我的第一个 JavaScript函数"); } JavaScript 输出 window.alert() 弹出警告框。document.write() 方法将内容写到 HTML 文档中。innerHTML 写入到 HTML 元素。console.log() 写入到浏览器的控制台。

使用 window.alert()弹出警告框

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> window.alert('弹出警告框'); </script> </head> <body> </body> </html>

使用document.write() 将内容写到 HTML 文档

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> document.write('将内容到HTML文档中'); </script> </head> <body> </body> </html>

使用innerHTML 写入到 HTML 元素

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p id="demo">我的第一个段落</p> <script> document.getElementById("demo").innerHTML = "写入HTML元素"; </script> </body> </html>

使用console.log() 写入到浏览器的控制台

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> console.log("写入控制台") </script> </head> <body> </body> </html>

JavaScript 语法

JavaScript 是一个脚本语言,是一个轻量级,但功能强大的编程语言。

JavaScript 字面量

数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e):

3 3.14 3.1415926e5

字符串(String)字面量 可以使用单引号或双引号:

‘Demo’ “Demo”

表达式字面量 用于计算:

3+9 3*9

数组(Array)字面量 定义一个数组:

[1, 2, 3, 4, 5]

对象(Object)字面量 定义一个对象:

{Name:“OIqng”, age:18}

JavaScript 变量

JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值:

var x = 4

JavaScript 操作符

类型实例赋值,算术和位运算符= + - * /条件,比较及逻辑运算符== != < >

JavaScript 语句

x = 4 + 5;

JavaScript 关键字

abstractelseinstanceofbooleanenumintbreakexportinterfacebyteextendsletcasefalselongcatchfinalnativecharfinallynewclassfloatnullconstforpackagecontinuefunctionprivatedebuggergotoprotecteddefaultifpublicdeleteimplementsreturndoimportshortdoubleinstatic

JavaScript 注释

双斜杠 // 后的内容将会被浏览器忽略:

// 这是一个注释

JavaScript 数据类型

JavaScript 有多种数据类型:数字,字符串,数组,对象等等:

var x = 3; // Number 通过数字字面量赋值 var y = x * 10; // Number 通过表达式字面量赋值 var Name = “OIqng”; // String 通过字符串字面量赋值 var a = [1, 2, 3]; // Array 通过数组字面量赋值 var person = {Name:“OIqng”, age:18}; // Object 通过对象字面量赋值

JavaScript 函数

引用一个函数 = 调用函数(执行函数内的语句)。

function myFunction(a, b) { return a + b; // 返回 a + b 的结果 }

JavaScript 字母大小写

JavaScript 对大小写是敏感的,常见的是驼峰法的命名规则。

lastName

JavaScript 语句

分号 ;

分号用于分隔 JavaScript 语句

a = 4; b = 5; c = a + b;

JavaScript 代码

document.getElementById("demo").innerHTML("你好");

JavaScript 代码块

代码块以左花括号开始,以右花括号结束。

function myFunction() { document.getElementById("demo").innerHTML("你好") }

JavaScript 语句标识符

语句描述break用于跳出循环catch语句块,在 try 语句块执行出错时执行 catch 语句块continue跳过循环中的一个迭代do … while执行一个语句块,在条件语句为 true 时继续执行该语句块for在条件语句为 true 时,可以将代码块执行指定的次数for … in用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)function定义一个函数if … else用于基于不同的条件来执行不同的动作return退出函数switch用于基于不同的条件来执行不同的动作throw抛出(生成)错误try实现错误处理,与 catch 一同使用var声明一个变量while当条件语句为 true 时,执行语句块

空格

JavaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。下面的两行代码是等效的:

var name=“OIqng”; var name = “OIqng”;

对代码行进行折行

您可以在文本字符串中使用反斜杠对代码行进行换行:

<script> document.write("Hell\ World!"); </script> JavaScript 注释

我们可以添加注释来对 JavaScript 进行解释,或者提高代码的可读性。

单行注释以 // 开头:

// 这是个注释

JavaScript 多行注释

/* 这是 一个 多行注释 */

JavaScript 变量

变量是用于存储信息的"容器"。

变量可以使用短名称(如 x 和 y),也可以使用描述性更好的名称(如 age, sum)。

变量必须以字母开头变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)变量名称对大小写敏感(y 和 Y 是不同的变量)

一条语句,多个变量

var name=“OIqng”, age=18;

也可跨行声明

var name=“OIqng”, age=18;

Value = undefined

在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。

var x;

JavaScript 数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

JavaScript 拥有动态类型

意味着在JavaScript中相同的变量可用作不同的类型:

<script> var x; x = 5; console.log(x) x = "OIqng" console.log(x) </script>

JavaScript 字符串

字符串是存储字符的变量,可以是单引号或双引号中的任意文本:

<script> var answer; answer = "He is called 'OIqng'"; console.log(answer); answer = 'He is called "OIqng"'; console.log(answer); </script>

JavaScript 数字

JavaScript 只有一种数字类型

<script> var x = 3.00; console.log(x); x = 3; console.log(x); x = 3.14e2; console.log(x); x = 3.14e-2; console.log(x); </script>

JavaScript 布尔

布尔(逻辑)只能有两个值:true 或 false。

<script> var x = true; console.log(x); var y = false; console.log(y); </script>

JavaScript 数组

<script> var a = new Array(); a[0] = 1; a[1] = 2; console.log(a); </script>

JavaScript 对象

JavaScript 对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:

<script> var person = { name : "OIqng", age : 18 } console.log(person); </script>

Undefined 和 Null

Undefined 这个值表示变量不含有值,可以通过将变量的值设置为 null 来清空变量。

<script> var x; console.log(x); x = null; console.log(x); </script>

JavaScript 对象

JavaScript 对象是拥有属性和方法的数据。

真实生活中的对象,属性和方法

对象属性方法car.name =BMWcar.color=Quantum bluecar.start()car.stop()

所有汽车都有这些属性,但是每款车的属性都不尽相同,所有汽车都拥有这些方法,但是它们被执行的时间都不相同。

JavaScript 对象

在 JavaScript中,几乎所有的事物都是对象,对象也是一个变量,但对象可以包含多个值(多个变量)

var car = "BMW"; var car = { type:"BMW", color:"Quantum blue" }

对象属性

JavaScript 对象是键值对的容器

对象键值对的写法类似于:

PHP 中的关联数组Python 中的字典C 语言中的哈希表Java 中的哈希映射Ruby 和 Perl 中的哈希表

访问对象属性

var car = { type:"BMW", color:"Quantum blue" } console.log(car.color) console.log(car["color"])

JavaScript 函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

JavaScript 函数语法

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname() { }

调用带参数的函数

在调用函数时,您可以向其传递值,这些值被称为参数,这些参数可以在函数中使用,您可以发送任意多的参数,由逗号 (,) 分隔:

myFunction(argument1,argument2)

带有返回值的函数

有时,我们会希望函数将值返回调用它的地方,通过使用 return 语句就可以实现。

在使用 return 语句时,函数会停止执行,并返回指定的值。

function myFunction() { var x = 3; return x; }

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的),只要函数运行完毕,局部变量就会被删除。

全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始,局部变量会在函数运行以后被删除,全局变量会在页面关闭后被删除。

<script> var x = 1; // 不可配置全局属性 y = 2; // 可配置全局属性 console.log(this.x); // 1 console.log(window.x); // 1 delete x; // 无法删除 console.log(x); //1 delete y; console.log(delete y); // true console.log(y); // 已经删除 报错变量未定义 </script> JavaScript 作用域

在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。

JavaScript 局部作用域

变量在函数内声明,变量为局部作用域。

function myFunction() { var x = 3; // 函数内可调用x变量 }

JavaScript 全局变量

变量在函数外定义,即为全局变量。

var x = 3; function myFunction() { // 函数内可调用x变量 } JavaScript 事件

HTML 事件是发生在 HTML 元素上的事情。

HTML 事件

HTML 事件可以是浏览器行为,也可以是用户行为。

常见的HTML事件

事件描述onchangeHTML 元素改变onclick用户点击 HTML 元素onmouseover用户在一个HTML元素上移动鼠标onmouseout用户从一个HTML元素上移开鼠标onkeydown用户按下键盘按键onload浏览器已完成页面的加载

事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:

页面加载时触发事件页面关闭时触发事件用户点击按钮执行动作验证用户输入内容的合法性… JavaScript 字符串

JavaScript 字符串用于存储和处理文本。

字符串长度

使用内置属性 length 来计算字符串的长度:

var sentence = "Its better to be alone than to be with someone youre not happy to be with"; console.log(sentence.length)

特殊字符

代码输出\’单引号\"双引号\\反斜杠\n换行\r回车\ttab(制表符)\b退格符\f换页符

字符串可以是对象

我们也可以使用 new 关键字将字符串定义为一个对象

var name1 = "OIqng"; console.log(typeof name1); var name2 = new String("OIqng"); console.log(typeof name2);

字符串属性和方法

字符串属性

属性描述constructor返回创建字符串属性的函数length返回字符串的长度prototype允许您向对象添加属性和方法

字符串方法

方法描述charAt()返回指定索引位置的字符charCodeAt()返回指定索引位置字符的 Unicode 值concat()连接两个或多个字符串,返回连接后的字符串fromCharCode()将 Unicode 转换为字符串indexOf()返回字符串中检索指定字符第一次出现的位置lastIndexOf()返回字符串中检索指定字符最后一次出现的位置localeCompare()用本地特定的顺序来比较两个字符串match()找到一个或多个正则表达式的匹配replace()替换与正则表达式匹配的子串search()检索与正则表达式相匹配的值slice()提取字符串的片断,并在新的字符串中返回被提取的部分split()把字符串分割为子字符串数组substr()从起始索引号提取字符串中指定数目的字符substring()提取字符串中两个指定的索引号之间的字符toLocaleLowerCase()根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射toLocaleUpperCase()根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射toLowerCase()把字符串转换为小写toString()返回字符串对象值toUpperCase()把字符串转换为大写trim()移除字符串首尾空白valueOf()返回某个字符串对象的原始值
JavaScript 运算符

JavaScript 算术运算符

下面的表格解释了这些算术运算符:

运算符描述+加法-减法*乘法/除法%取余数++自增–自减

JavaScript 赋值运算符

赋值运算符用于给 JavaScript 变量赋值。

运算符例子等同于=x=y+=x+=yx=x+y-=x-=yx=x-y*=x*=yx=x*y/=x/=yx=x/y%=x%=yx=x%y

用于字符串的 + 运算符

+ 运算符用于把文本值或字符串变量加起来(连接起来)。

var name1 = "My name is "; var name2 = "OIqng"; console.log(name1 + name2);

对字符串和数字进行加法运算

var x = 5 + 4; console.log(x); var y = "5" + 4; console.log(y);

JavaScript 比较符

比较运算符

运算符描述==等于===绝对等于(值和类型均相等)!=不等于!==不绝对等于(值和类型有一个不相等,或两个都不相等)>大于<小于>=大于或等于<=小于或等于

逻辑运算符

运算符描述&&and!not

条件运算符

variablename=(condition)?value1:value2

JavaScript 条件语句 if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码if…else if…else 语句- 使用该语句来选择多个代码块之一来执行switch 语句 - 使用该语句来选择多个代码块之一来执行

if 语句

if (condition) { // 当条件为 true 时执行的代码 }

if…else 语句

if (condition) { // 当条件为 true 时执行的代码 } else { // 当条件不为 true 时执行的代码 }

if…else if…else 语句

if (condition1) { // 当条件 1 为 true 时执行的代码 } else if (condition2) { // 当条件 2 为 true 时执行的代码 } else { // 当条件 1 和 条件 2 都不为 true 时执行的代码 } JavaScript switch 语句 switch(n) { case 1: // 执行代码块 1 break; case 2: // 执行代码块 2 break; default: // 当 case 1 和 case 2 条件不满足时执行的代码 } JavaScript 循环 for - 循环代码块一定的次数for/in - 循环遍历对象的属性while - 当指定的条件为 true 时循环指定的代码块do/while - 同样当指定的条件为 true 时循环指定的代码块

For 循环

for (var i = 0; i < 5; i++) { console.log(i); }

For/In 循环

var person = { name:"OIqng", age:18 } for (i in person) { console.log(person[i]); }

JavaScript while 循环

while 循环

while (condition) { // 需要执行的代码 }

do/while 循环

do { // 需要执行的代码 } while (condition); JavaScript break 和 continue 语句

break 语句用于跳出循环,continue 用于跳过循环中的一个迭代。

break 语句

for (var i = 0; i < 5; i++) { if (i == 3) { break; } console.log(i); }

continue 语句

for (var i = 0; i < 5; i++) { if (i == 3) { continue; } console.log(i); } JavaScript typeof

typeof 操作符

使用 typeof 操作符来检测变量的数据类型。

console.log(typeof "OIqng"); console.log(typeof 3); console.log(typeof true); console.log(typeof [3]); console.log(typeof {name:"OIqng"});

null

null是一个值为空的特殊类型。表示一个空对象引用。

var x = null; console.log(x); console.log(typeof x);

undefined

在 JavaScript 中, undefined 是一个没有设置值的变量,typeof 一个没有值的变量会返回 undefined。

x = undefined; console.log(x); console.log(typeof x);

undefined 和 null 的区别

null 和 undefined 的值相等,但类型不等:

var x = null; var y = undefined; console.log(x == y); console.log(x === y);

JavaScript 类型转换

Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。

JavaScript 数据类型

在 JavaScript 中有 6 种不同的数据类型:

stringnumberbooleanobjectfunctionsymbol

3 种对象类型:

ObjectDateArray

2 个不包含任何值的数据类型:

nullundefined

constructor 属性

constructor 属性返回所有 JavaScript 变量的构造函数。

document.write("OIqng".constructor + "<br>"); document.write((3.14).constructor + "<br>"); document.write(true.constructor + "<br>"); document.write([1].constructor + "<br>"); document.write(new Date().constructor + "<br>");

JavaScript 类型转换

通过使用 JavaScript 函数通过 JavaScript 自身自动转换

将数字转换为字符串

全局方法 String() 可以将数字转换为字符串。

console.log(typeof String(1)); console.log(typeof String(1 + 2));

Number 方法 toString() 也是有同样的效果

var x = 3; console.log(typeof x.toString());

数字转换为字符串的方法:

方法描述toExponential()把对象的值转换为指数计数法toFixed()把数字转换为字符串,结果的小数点后有指定位数的数字toPrecision()把数字格式化为指定的长度

将布尔值转换为字符串

console.log(typeof String(true)); // 全局方法 String() 可以将布尔值转换为字符串 console.log(typeof true.toString()); // Boolean 方法 toString()

将日期转换为字符串

console.log(typeof Date()); // Date() 返回字符串。 console.log(typeof String(new Date())); // 全局方法 String() 可以将日期对象转换为字符串

Date 方法 toString()也可以将日期对象转换为字符串

a = new Date() console.log(typeof a.toString());

日期转换为字符串的函数:

方法描述getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)getFullYear()从 Date 对象以四位数字返回年份getHours()返回 Date 对象的小时 (0 ~ 23)getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)getMinutes()返回 Date 对象的分钟 (0 ~ 59)getMonth()从 Date 对象返回月份 (0 ~ 11)getSeconds()返回 Date 对象的秒数 (0 ~ 59)getTime()返回 1970 年 1 月 1 日至今的毫秒数

将字符串转换为数字

全局方法 Number() 可以将字符串转换为数字。

console.log(Number("3")); console.log(Number("")); console.log(Number(" "));

字符串转为数字的方法:

方法描述parseFloat()解析一个字符串,并返回一个浮点数parseInt()解析一个字符串,并返回一个整数

+ 可用于将变量转换为数字,如果变量不能转换,它仍然会是一个数字,但值为 NaN

var x = "3"; var y = + x; console.log(y); x = "OIqng"; y = + x; console.log(y);

将布尔值转换为数字

console.log(Number(true));

将日期转换为数字

a = new Date(); console.log(Number(a)); // 全局方法 Number() 可将日期转换为数字 console.log(a.getTime()); // 日期方法 getTime()

自动转换类型

当 JavaScript 尝试操作一个 “错误” 的数据类型时,会自动转换为 “正确” 的数据类型

JavaScript 正则表达式

正则表达式(英文:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

/正则表达式主体/修饰符(可选)

使用字符串方法

search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

search() 方法使用正则表达式

var str = "Visit OIqng!"; var n = str.search(/OIqng/i); console.log(n);

search() 方法使用字符串

var str = "Visit OIqng!"; var n = str.search("OIqng"); console.log(n);

replace() 方法使用正则表达式

使用正则表达式且不区分大小写将字符串中的name替换为 OIqng:

var str = "Visit name!"; var n = str.replace(/name/i, "OIqng"); console.log(n);

replace() 方法使用字符串

var str = "Visit name!"; var n = str.replace("name", "OIqng"); console.log(n);

正则表达式修饰符

修饰符 可以在全局搜索中不区分大小写:

修饰符描述i执行对大小写不敏感的匹配g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)m执行多行匹配

正则表达式模式

括号用于查找某个范围内的字符:

表达式描述[abc]查找方括号之间的任何字符[0-9]查找任何从 0 至 9 的数字(x|y)查找任何以 | 分隔的选项

元字符是拥有特殊含义的字符:

元字符描述\d查找数字\s查找空白字符\b匹配单词边界\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符

量词:

量词描述n+匹配任何包含至少一个 n 的字符串n*匹配任何包含零个或多个 n 的字符串n?匹配任何包含零个或一个 n 的字符串

使用 RegExp 对象

在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

使用 test()

test() 方法是一个正则表达式,用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true。

console.log(/e/.test("the best thing is learning knowledge"));

使用 exec()

exec() 方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

console.log(/e/.exec("the best thing is learning knowledge"));

JavaScript 错误

try 语句测试代码块的错误。 catch 语句处理错误。 throw 语句创建自定义错误。 finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。

JavaScript 抛出(throw)错误

当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

描述这种情况的技术术语是:JavaScript 将抛出一个错误。

JavaScript try 和 catch

try 语句允许我们定义在执行时进行错误测试的代码块。catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。JavaScript 语句 try 和 catch 是成对出现的。

try { ... // 异常的抛出 } catch(err) { ... // 异常的捕获与处理 } finally { ... // 结束处理 }

Throw 语句

throw 语句允许我们创建自定义错误。正确的技术术语是:创建或抛出异常(exception)。如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

throw exception

JavaScript 调试

console.log() 方法

在调试窗口上打印 JavaScript 值

设置断点

在调试窗口中,你可以设置 JavaScript 代码的断点。在每个断点上,都会停止执行 JavaScript 代码,以便于我们检查 JavaScript 变量的值。

debugger 关键字

debugger 关键字用于停止执行 JavaScript,并调用调试函数。

JavaScript 变量提升

在JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

在JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

x = 3; console.log(x); var x;

var x; x = 3; console.log(x);

JavaScript 初始化不会提升

JavaScript 只有声明的变量会提升,初始化的不会。

var x = 3; var y = 5; console.log("x = " + x + " y = " + y);

var x = 3; console.log("x = " + x + " y = " + y); var y = 5;

JavaScript 严格模式

JavaScript 严格模式(strict mode)即在严格的条件下运行。

使用 “use strict” 指令

“use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增,严格模式下你不能使用未声明的变量。

严格模式声明

严格模式通过在脚本或函数的头部添加 “use strict”; 表达式来声明。

<script> "use strict"; </script> <script> "use strict"; x = 3; </script>

严格模式的限制

不允许使用未声明的变量不允许删除变量或对象不允许删除变量或对象不允许删除函数不允许变量重名不允许使用八进制不允许使用转义字符不允许对只读属性赋值不允许对一个使用getter方法读取的属性进行赋值不允许删除一个不允许删除的属性变量名不能使用 “eval” 字符串变量名不能使用 “arguments” 字符串在作用域 eval() 创建的变量不能被调用禁止this关键字指向全局对象

保留关键字

implementsinterfaceletpackageprivateprotectedpublicstaticyield JavaScript 表单

HTML 表单自动验证

如果表单字段 (fname) 的值为空, required 属性会阻止表单提交

<input type="text" name="fname" required="required">

数据验证

服务端数据验证是在数据提交到服务器上后再验证。

客户端数据验证是在数据发送到服务器前,在浏览器上完成验证。

HTML 约束验证

HTML 输入属性CSS 伪类选择器DOM 属性和方法

约束验证 HTML 输入属性

属性描述disabled规定输入的元素不可用max规定输入元素的最大值min规定输入元素的最小值pattern规定输入元素值的模式required规定输入元素字段是必需的type规定输入元素的类型

约束验证 CSS 伪类选择器

选择器描述:disabled选取属性为 “disabled” 属性的 input 元素:invalid选取无效的 input 元素:optional选择没有"required"属性的 input 元素:required选择有"required"属性的 input 元素:valid选取有效值的 input 元素
JavaScript 验证 API

约束验证 DOM 方法

PropertyDescriptioncheckValidity()如果 input 元素中的数据是合法的返回 truesetCustomValidity()设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示,方式如下:setCustomValidity(’’) setCustomValidity(null) setCustomValidity(undefined)

约束验证 DOM 属性

属性描述validity布尔属性值,返回 input 输入值是否合法validationMessage浏览器错误提示信息willValidate指定 input 是否需要验证Validity属性input元素的 validity 属性包含一系列关于 validity 数据属性
属性描述customError设置为 true, 如果设置了自定义的 validity 信息patternMismatch设置为 true, 如果元素的值不匹配它的模式属性rangeOverflow设置为 true, 如果元素的值大于设置的最大值rangeUnderflow设置为 true, 如果元素的值小于它的最小值stepMismatch设置为 true, 如果元素的值不是按照规定的 step 属性设置tooLong设置为 true, 如果元素的值超过了 maxLength 属性设置的长度typeMismatch设置为 true, 如果元素的值不是预期相匹配的类型valueMissing设置为 true,如果元素 (required 属性) 没有值valid设置为 true,如果元素的值是合法的
JavaScript 保留关键字

JavaScript 标准

ECMAScript 5(ES5,2009 年发布),是 JavaScript 最新的官方版本。

JavaScript 保留关键字

Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。

abstractargumentsbooleanbreakbytecasecatchcharclass*constcontinuedebuggerdefaultdeletedodoubleelseenum*evalexport*extends*falsefinalfinallyfloatforfunctiongotoifimplementsimport*ininstanceofintinterfaceletlongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuper*switchsynchronizedthisthrowthrowstransienttruetrytypeofvarvoidvolatilewhilewithyield

* 标记的关键字是 ECMAScript5 中新添加的。

JavaScript 对象、属性和方法

您也应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名:

ArrayDateevalfunctionhasOwnPropertyInfinityisFiniteisNaNisPrototypeOflengthMathNaNnameNumberObjectprototypeStringtoStringundefinedvalueOf

Java 保留关键字

JavaScript 经常与 Java 一起使用。您应该避免使用一些 Java 对象和属性作为 JavaScript 标识符:

getClassjavaJavaArrayjavaClassJavaObjectJavaPackage

Windows 保留关键字

在 HTML 中,您必须(为了可移植性,您也应该这么做)避免使用 HTML 和 Windows 对象和属性的名称作为 Javascript 的变量及函数名:

alertallanchoranchorsareaassignblurbuttoncheckboxclearIntervalclearTimeoutclientInformationcloseclosedconfirmconstructorcryptodecodeURIdecodeURIComponentdefaultStatusdocumentelementelementsembedembedsencodeURIencodeURIComponentescapeeventfileUploadfocusform formsframeinnerHeightinnerWidthlayerlayerslinklocationmimeTypesnavigatenavigatorframesframeRatehiddenhistoryimageimagesoffscreenBufferingopenopeneroptionouterHeightouterWidthpackagespageXOffsetpageYOffsetparentparseFloatparseIntpasswordpkcs11pluginpromptpropertyIsEnumradioresetscreenXscreenYscrollsecureselectselfsetIntervalsetTimeoutstatussubmittainttexttextareatopunescapeuntaintwindow

HTML 事件句柄

除此之外,您还应该避免使用 HTML 事件句柄的名称作为 Javascript 的变量及函数名。

onbluronclickonerroronfocusonkeydownonkeypressonkeyuponmouseoveronloadonmouseuponmousedownonsubmit
JavaScript this

面向对象语言中 this 表示当前对象的一个引用。

但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

在方法中,this 表示该方法所属的对象如果单独使用,this 表示全局对象。在函数中,this 表示全局对象。在函数中,在严格模式下,this 是未定义的(undefined)。在事件中,this 表示接收事件的元素。类似 call() 和 apply() 方法可以将 this 引用到任何对象。

方法中的 this

在对象方法中, this 指向调用它所在方法的对象。

单独使用 this

单独使用 this,则它指向全局(Global)对象。

在浏览器中,window 就是该全局对象为 [object Window]

var x = this; console.log(x);

严格模式下,如果单独使用,this 也是指向全局(Global)对象。

"use strict"; var x = this; console.log(x);

函数中使用 this(默认)

在函数中,函数的所属者默认绑定到 this 上,而在浏览器中,window 就是该全局对象为 [object Window]:

function myFunction() { return this; } console.log(myFunction());

函数中使用 this(严格模式)

严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。

"use strict"; function myFunction() { return this; } console.log(myFunction());

事件中的 this

在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:

<butto onclick="this.style.display='none'">点完就消失</button> JavaScript let 和 const

ECMAScript 2015(ECMAScript 6)

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。

let 声明的变量只在 let 命令所在的代码块内有效。const 声明一个只读的常量,一旦声明,常量的值就不能改变。

let关键字

let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

{ let x = 2; } // 这里不能使用 x 变量

重新定义变量

var x = 3; console.log(x); { let x = 5; console.log(x); } console.log(x);

使用 let 关键字声明的全局作用域变量不属于 window 对象:

let personName = "OIqng"; console.log(window.personName);

在相同的作用域或块级作用域中:

不能使用 let 关键字来重置 var 关键字声明的变量不能使用 let 关键字来重置 let 关键字声明的变量不能使用 var 关键字来重置 let 关键字声明的变量:

let 关键字定义的变量则不可以在使用后声明,也就是变量需要先声明再使用。

const 关键字

const 用于声明一个或多个常量,声明时必须进行初始化,且初始化后值不可再修改

const PI = 3.14; PI = 3.1415926;

const定义常量与使用let 定义的变量相似:

二者都是块级作用域都不能和它所在作用域内的其他变量或函数拥有相同的名称

两者还有以下两点区别:

const声明的常量必须初始化,而let声明的变量不用const 定义常量的值不能通过再赋值修改,也不能再次声明。而 let 定义的变量值可以修改。

并非真正的常量

const 的本质: const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的。

const car = { type:"BMW", color:"Quantum blue" }; car.color = "Alpine White"; console.log(car);

const 关键字定义的变量则不可以在使用后声明,也就是变量需要先声明再使用。

在相同的作用域或块级作用域中:

不能使用 const 关键字来重置 var 和 let关键字声明的变量不能使用 const 关键字来重置 const 关键字声明的变量 JavaScript JSON

JSON 是用于存储和传输数据的格式,通常用于服务端向网页传递数据 。

JSON 英文全称 JavaScript Object NotationJSON 是一种轻量级的数据交换格式。JSON是独立的语言 (JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本)JSON 易于理解。

JSON 语法规则

数据为 键/值 对。数据由逗号分隔。大括号保存对象方括号保存数组

JSON 数据 :一个名称对应一个值

JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。

“name”:“OIqng”

JSON 字符串转换为 JavaScript 对象

var text = '{ "person" : [' + '{ "name":"OIqng"} ]}'; obj = JSON.parse(text); console.log(obj.person[0].name);

相关函数

函数描述JSON.parse()用于将一个 JSON 字符串转换为 JavaScript 对象JSON.stringify()用于将 JavaScript 值转换为 JSON 字符串
JavaScript void

void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。

void func() javascript:void func()

href="#"与href="javascript:void(0)"的区别

# 包含了一个位置信息,javascript:void(0), 仅仅表示一个死链接。

JavaScript 代码规范 变量和函数的命名规则空格,缩进,注释的使用规则。其他常用规范……

变量名

变量名推荐使用驼峰法来命名(camelCase):

firstName

空格与运算符

通常运算符 ( = + - * / ) 前后需要添加空格:

var x = 1 + 3;

代码缩进

通常使用 4 个空格符号来缩进代码块

语句规则

语句通常以分号作为结束符将左花括号放在第一行的结尾。左花括号前添加一空格。将右花括号独立放在一行。不要以分号结束一个复杂的声明

对象规则

将左花括号与类名放在同一行。冒号与属性值间有个空格。字符串使用双引号,数字不需要。最后一个属性-值对后面不要添加逗号。将右花括号独立放在一行,并以分号作为结束符号

每行代码字符小于 80

命名规则

变量和函数为小驼峰法标识, 即除第一个单词之外,其他单词首字母大写( lowerCamelCase)全局变量为大写 (UPPERCASE )常量 (如 PI) 为大写 (UPPERCASE )


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #JavaScript #用法html