阅读本教程,您需要有以下基础:
- HTML 和 CSS 基础
JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。是可插入 HTML 页面的编程代码。插入 HTML 页面后,可由所有的现代浏览器执行。很容易学习。
我们将学习一下内容:
- JavaScript:直接写入 HTML 输出流
- JavaScript:对事件的反应
- JavaScript:改变 HTML 内容
- JavaScript:改变 HTML 图像
- JavaScript:改变 HTML 样式
- JavaScript:验证输入
别搞错了哦?!
JavaScript 与 Java 是两种完全不同的语言,无论在概念上还是设计上。而Java(由 Sun 发明)是更复杂的编程语言。ECMAScript才是 JavaScript 标准的官方名称。 |
JavaScript用法
可以在 HTML 文档中放入不限数量的脚本,可位于 HTML 的 <body> 或 <head> 部分中,或者同时存在于两个部分中。HTML 中的脚本必须位于 <script> 与 </script> 标签之间。通常的做法是把函数放入 <head> 部分中,或者放在页面底部
JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言,所以现在已经不必 <script> 标签中使用 type="text/javascript"。
也可以把脚本保存到外部文件中,。外部文件(.js)通常包含被多个网页使用的代码。 <script> 标签的 "src" 属性中设置该 .js 文件
JavaScript输出
JavaScript 没有任何打印或者输出的函数。JavaScript 可以通过不同的方式来输出数据:
- 使用 window.alert() 弹出警告框:window.alert(5 + 6);
- 使用 document.write() 方法将内容写到 HTML 文档中。如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖。
- 使用 innerHTML 写入到 HTML 元素。用于修改元素的 HTML 内容,document.getElementById("demo") 是使用 id 属性来查找 HTML 元素的 JavaScript
- 使用 console.log() 写入到浏览器的控制台。浏览器中使用 F12 来启用调试模式, 在调试窗口中点击 "Console" 菜单。可以使用 console.log() 方法在浏览器中显示 JavaScript 值。程序中调试是测试,查找及减少bug(错误)的过程。
JavaScript 字面量——固定值
- 数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。
- 字符串(String)字面量 可以使用单引号或双引号
- 表达式字面量 用于计算
- 数组(Array)字面量 定义一个数组
- 对象(Object)字面量 定义一个对象
- 函数(Function)字面量 定义一个函数
JavaScript 变量及作用域
JavaScript 使用关键字 var 来声明定义变量(不是必须的), 使用等号来为变量赋值,然后通过变量名访问。变量通常是可变的,是一个名称。字面量是一个恒定的值。
- 变量必须以字母开头
- 变量也能以 $ 和 _ 符号开头
- 变量名称对大小写敏感
- 未赋值声明的变量,值是 undefined
- JavaScript也使用驼峰命名规则,如 lastName (而不是lastname)。
1. 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。只要函数运行完毕,本地变量就会被删除。函数参数只在函数内起作用,是局部变量。
2. 在函数外声明的变量和在函数内没有声明(没有使用 var 关键字)的变量是全局变量,,网页上的所有脚本和函数都能访问它。
3. JavaScript 变量的生命期从它们被声明的时间开始。局部变量会在函数运行以后被删除。全局变量会在页面关闭后被删除。
4. 未声明的变量将被自动作为 window 的一个属性。非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,才可以删除。
5. 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。
6. 在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。全局变量,或者函数,可以覆盖 window 对象的变量或者函数。局部变量,包括 window 对象可以覆盖全局变量和函数。
JavaScript 操作符
JavaScript语言有多种类型的运算符:
类型 | 实例 | 描述 |
---|---|---|
赋值,算术和位运算符 | = + - * / % ++ -- | 其中/为除法(非整除) + 运算符也可用于把文本值或字符串变量连接起来。数字与字符串相加,返回字符串 |
条件,比较及逻辑运算符 | == != < > === !== | ===绝对等于(值和类型均相等),!== 不绝对等于(值和类型有一个不相等,或两个都不相等) |
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符:
条件表达式A?表达式B:表达式C复制代码
如果条件表达式A成立,那么执行表达式B,否则执行表达式C。
JavaScript 语句
JavaScript 语句是发给浏览器的命令(告诉浏览器要做的事情。)。语句是用分号分隔,使用分号的另一用处是在一行中编写多条语句。
下表列出了 JavaScript 语句标识符 (保留字) :
语句 | 描述 |
---|---|
break | 用于跳出循环。 |
catch | 语句块,在 try 语句块执行出错时执行 catch 语句块。 |
continue | 跳过循环中的一个迭代。 |
do ... while | 执行一个语句块,在条件语句为 true 时继续执行该语句块。do { 需要执行的代码 } while (条件); |
for | 在条件语句为 true 时,可以将代码块执行指定的次数。for (初始;循环开始前执行; 运行循环体的条件; 循环体执行后执行) { 被执行的代码块 } |
for ... in | 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。for (x in array){ 循环体 } |
function | 定义一个函数 |
if ... else | 用于基于不同的条件来执行不同的动作。if (condition1) { |
return | 退出函数 |
switch | 用于基于不同的条件来执行不同的动作。switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: 与 case 1 和 case 2 不同时执行的代码 } |
throw | 抛出(生成)错误 。 |
try | 实现错误处理,与 catch 一同使用。 |
var | 声明一个变量。 |
while | 指定条件为真时循环执行代码块。while (条件) { 需要执行的代码 } |
文本字符串中可以使用反斜杠对代码行进行换行。
可以对 JavaScript 语句进行标记,如果需标记 JavaScript 语句,请在语句之前加上冒号。
通过标签引用,break 语句可用于跳出任何 JavaScript 代码块:
cars=["BMW","Volvo","Saab","Ford"];
list:
{
document.write(cars[1] + "<br>");
break list;
document.write(cars[1] + "<br>");
}
JavaScript 关键字
JavaScript 关键字用于标识要执行的操作,必须以字母、下划线(_)或美元符($)开始。。
JavaScript 同样保留了一些关键字,称为保留字,不能用作变量名或函数名。
JavaScript 中最重要的保留字(按字母顺序):
abstract | else | instanceof | super |
boolean | enum | int | switch |
break | export | interface | synchronized |
byte | extends | let | this |
case | false | long | throw |
catch | final | native | throws |
char | finally | new | transient |
class | float | null | true |
const | for | package | try |
continue | function | private | typeof |
debugger | goto | protected | var |
default | if | public | void |
delete | implements | return | volatile |
do | import | short | while |
double | in | static | with |
也应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名:
Array | Date | eval | function | hasOwnProperty |
Infinity | isFinite | isNaN | isPrototypeOf | length |
Math | NaN | name | Number | Object |
prototype | String | toString | undefined | valueOf |
应该避免使用一些 Java 对象和属性作为 JavaScript 标识符:
getClass | java | JavaArray | javaClass | JavaObject | JavaPackage |
必须(为了可移植性,您也应该这么做)避免使用 HTML 和 Windows 对象和属性的名称作为 Javascript 的变量及函数名:
alert | all | anchor | anchors | area |
assign | blur | button | checkbox | clearInterval |
clearTimeout | clientInformation | close | closed | confirm |
constructor | crypto | decodeURI | decodeURIComponent | defaultStatus |
document | element | elements | embed | embeds |
encodeURI | encodeURIComponent | escape | event | fileUpload |
focus | form | forms | frame | innerHeight |
innerWidth | layer | layers | link | location |
mimeTypes | navigate | navigator | frames | frameRate |
hidden | history | image | images | offscreenBuffering |
open | opener | option | outerHeight | outerWidth |
packages | pageXOffset | pageYOffset | parent | parseFloat |
parseInt | password | pkcs11 | plugin | prompt |
propertyIsEnum | radio | reset | screenX | screenY |
scroll | secure | select | self | setInterval |
setTimeout | status | submit | taint | text |
textarea | top | unescape | untaint | window |
还应该避免使用 HTML 事件句柄的名称作为 Javascript 的变量及函数名。
onblur | onclick | onerror | onfocus |
onkeydown | onkeypress | onkeyup | onmouseover |
onload | onmouseup | onmousedown | onsubmit |
除了保留字,在 JavaScript 实现中也有一些非标准的关键字。比如const 关键字,用于定义变量。 一些 JavaScript 引擎把 const 当作 var 的同义词。另一些引擎则把 const 当作只读变量的定义。建议:不要使用它。
this关键字:
- 在对象方法中, this 指向调用它所在方法的对象(方法的所有者)
- 单独使用 this,则它指向全局(Global)对象。浏览器中,window 就是全局对象
- 函数中,默认模式下this指向函数的所属者;严格模式下(不允许默认绑定),this 为 undefined
- 在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素
- 在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。允许切换函数执行的上下文环境(context),即 this 绑定的对象。
let 关键字:
let声明的变量只在 let 命令所在的代码块内有效。使用 var 关键字声明的变量(非函数中)不具备块级作用域的特性,它在 {} 外依然能被访问到。使用 var 关键字在块中重新声明变量也会重新声明块外的变量。使用 var 关键字声明的全局作用域变量属于 window 对象。
在相同的作用域或块级作用域中,不能使用 let 关键字来重置 var 关键字声明的变量,不能使用 let 关键字来重置 let 关键字声明的变量,不能使用 var 关键字来重置 let 关键字声明的变量,let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的。
JavaScript 中,var 关键字定义的变量可以先使用再声明,let 关键字定义的变量需要先声明再使用。
const关键字:const 声明一个只读的常量,一旦声明,常量的值就不能改变。
const
定义常量与使用let
定义的变量相似:
- 二者都是块级作用域
- 都不能和它所在作用域内的其他变量或函数拥有相同的名称
两者还有以下两点区别:
const
声明的常量必须初始化,而let
声明的变量不用- const 定义常量的值不能通过再赋值修改,也不能再次声明。而 let 定义的变量值可以修改
const 的本质: const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的。不能对常量对象重新赋值,但是可以改变常量对象的属性和方法。
在相同的作用域或块级作用域中,不能使用 const 关键字来重置 var 和 let关键字声明的变量;在相同的作用域或块级作用域中,不能使用 const 关键字来重置 const 关键字声明的变量;const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的;const 关键字定义的变量需要先声明再使用。
JavaScript 注释
单行注释://
多行注释:/* */
JavaScript 数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(表示独一无二的值)。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
- 通常使用字符创建字符串:var firstName = "John",也可以使用 new 关键字将字符串定义为一个对象: var firstName = new String("John"),但一般不推荐(拖慢执行速度,并可能产生其他副作用)。可以用内置属性 .length 来计算字符串的长度,转义字符 (\) 可以用于转义撇号,换行,引号,等其他特殊字符。
下表中列举了在字符串中可以使用转义字符转义的特殊字符:
代码 | 输出 |
---|---|
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\n | 换行 |
\r | 回车 |
\t | tab(制表符) |
\b | 退格符 |
\f | 换页符 |
字符串属性:
属性 | 描述 |
---|---|
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() | 返回某个字符串对象的原始值 |
=== 为绝对相等,即数据类型与值都必须相等。
- Undefined 表示变量不含有值
- 变量的值设置为 null 来清空变量,null是一个空对象
- null 和 undefined 的值相等,但类型不等
-
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String;
var x= new Number; - 对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔 ,在 JavaScript中,几乎所有的事物都是对象。JavaScript 对象是变量的容器,容器中的变量有值。定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的
1. 对象键值对的写法类似于:Python 中的字典和C 语言中的哈希表,通过两种方式访问对象属性——person.lastName(或person["lastName"];)
2. 对象的方法定义了一个函数,并作为对象的属性存储。访问 person 对象的 fullName方法属性时,不加括号输出函数表达式,加括号(调用)输出函数执行结果。
3. 创建对象的方法:
methodName : function() { code lines }复制代码
- 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。语法如下:function functionname ( )
{
// 执行代码
}
1. 关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数
2. 变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。函数参数只在函数内起作用,是局部变量。
3. 通过使用 return 语句,函数会停止执行,并返回指定的值
typeof 操作符来检测变量的数据类型
类型转换:
- 函数 String()和方法toString() 将数字转换为字符串
方法 | 描述 |
---|---|
toExponential() | 把对象的值转换为指数计数法。 |
toFixed() | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toPrecision() | 把数字格式化为指定的长度。 |
- 函数String()和 方法toString() 可以将布尔值转换为字符串。
- Date()返回字符串、函数String() 和方法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() 可以将字符串转换为数字。数字(如 "3.14") 转换为数字 (如 3.14).空字符串转换为 0。其他的字符串会转换为 NaN (不是个数字)。
方法 描述 parseFloat() 解析一个字符串,并返回一个浮点数。 parseInt() 解析一个字符串,并返回一个整数。 - Operator + 可用于将变量转换为数字,如果变量不能转换,它仍然会是一个数字,但值为 NaN (不是一个数字)。
- 函数Number() 可将布尔值转换为数字
-
函数Number() 和日期方法 getTime()可将日期转换为数字。
自动转换类型:当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法.
下表展示了使用不同的数值转换为数字(Number), 字符串(String), 布尔值(Boolean):
原始值 | 转换为数字 | 转换为字符串 | 转换为布尔值 | |
---|---|---|---|---|
false | 0 | "false" | false | |
true | 1 | "true" | true | |
0 | 0 | "0" | false | |
1 | 1 | "1" | true | |
"0" | 0 | "0" | true | |
"000" | 0 | "000" | true | |
"1" | 1 | "1" | true | |
NaN | NaN | "NaN" | false | |
Infinity | Infinity | "Infinity" | true | |
-Infinity | -Infinity | "-Infinity" | true | |
"" | 0 | "" | false | |
"20" | 20 | "20" | true | |
"Runoob" | NaN | "Runoob" | true | |
[ ] | 0 | "" | true | |
[20] | 20 | "20" | true | |
[10,20] | NaN | "10,20" | true | |
["Runoob"] | NaN | "Runoob" | true | |
["Runoob","Google"] | NaN | "Runoob,Google" | true | |
function(){} | NaN | "function(){}" | true | |
{ } | NaN | "[object Object]" | true | |
null | 0 | "null" | false | |
undefined | NaN | "undefined" | false |
JavaScript 事件
HTML 事件是发生在 HTML 元素上的事情。下面是一些常见的HTML事件的列表:
事件 | 描述 |
---|---|
onchange | HTML 元素改变 |
onclick | 用户点击 HTML 元素 |
onmouseover | 用户在一个HTML元素上移动鼠标 |
onmouseout | 用户从一个HTML元素上移开鼠标 |
onkeydown | 用户按下键盘按键 |
onload | 浏览器已完成页面的加载 |
比较常见的是通过事件属性来调用JavaScript代码
HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素
修改自身元素的内容 (使用 this.innerHTML):
<button onclick="this.innerHTML=Date()">现在的时间是?</button>复制代码
事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:
- 页面加载时触发事件
- 页面关闭时触发事件
- 用户点击按钮执行动作
- 验证用户输入内容的合法性
可以使用多种方法来执行 JavaScript 事件代码:
- HTML 事件属性可以直接执行 JavaScript 代码
- HTML 事件属性可以调用 JavaScript 函数
- 可以为 HTML 元素指定自己的事件处理程序
- 可以阻止事件的发生。
JavaScript 字母大小写
JavaScript 对大小写是敏感的。函数 getElementById 与 getElementbyID 是不同的。同样,变量 myVariable 与 MyVariable 也是不同的。
JavaScript 字符集
JavaScript 使用 Unicode 字符集(覆盖了所有的字符,包含标点等字符)。
JavScript 正则表达式
在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false:
var patt = /e/;
patt.test("The best things in life are free!");复制代码
exec() 方法用于检索字符串中的正则表达式的匹配。
该方法返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
JavaScript错误和调试
错误:
- try 语句测试代码块的错误。
- catch 语句处理错误。
- throw 语句创建或抛出异常(exception),语法:throw exception,异常可以是 JavaScript 字符串、数字、逻辑值或对象。。
- finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
调试:
- 通常在编写一个新的 JavaScript 代码过程中都会发生错误,在程序代码中寻找错误叫做代码调试
- 浏览器启用调试工具一般是按下 F12 键,并在调试菜单中选择 "Console"
- 在调试窗口设置 JavaScript 代码的断点,在每个断点上,都会停止执行 JavaScript 代码,以便于检查 JavaScript 变量的值。在检查完毕后,可以重新执行代码(如播放按钮)
- debugger 关键字用于停止执行 JavaScript,并调用调试函数,与在调试工具中设置断点的效果是一样的(前提是有调试可用该语句才能正常工作)。
JavaScript变量提升
变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。
JavaScript 只有声明的变量会提升,初始化的变量不会。
JavaScript 严格模式(strict mode)不允许使用未声明的变量。
JavaScript 严格模式(use strict)
"use strict" ,不是一条语句,但是是一个字面量表达式,目的是指定代码在严格条件下执行。
"use strict" 指令只允许出现在脚本或函数的开头。
严格模式的限制:
- 不能使用未声明的变量或对象
- 不允许删除变量或对象
- 不允许删除函数
- 不允许变量重名
- 不允许使用八进制
- 不允许使用转义字符
- 不允许对只读属性赋值
- 不允许对一个使用getter方法读取的属性进行赋值
- 不允许删除一个不允许删除的属性
- 变量名不能使用 "eval" 字符串
- 变量名不能使用 "arguments" 字符串
- 作用域 eval() 创建的变量不能被调用
- 禁止this关键字指向全局对象,严格模式下this关键字不指向全局对象,而值为undefined
严格模式新增了一些保留关键字:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
JavaScript 表单
HTML 表单验证可以通过 JavaScript 来完成,HTML 表单验证也可以通过浏览器来自动完成(通过属性required="required")
典型的数据验证(用于确保用户输入的数据是有效的)有:
- 必需字段是否有输入?
- 用户是否输入了合法的数据?
- 在数字字段是否输入了文本?
服务端数据验证是在数据提交到服务器上后再验证。
客户端数据验证 side validation是在数据发送到服务器前,在浏览器上完成验证。
表单数据经常需要使用 JavaScript 来验证其正确性:
- 验证表单数据是否为空?
- 验证输入是否是一个正确的email地址?
- 验证日期是否输入正确?
- 验证表单输入内容是否为数字型?
JavaScript JOSN
JSON 英文全称 JavaScript Object Notation,是一种轻量级的数据交换(存储和传输数据)格式,通常用于服务端向网页传递数据 。JSON是独立的语言 ,使用的是JavaScript 语法。
JSON 实例:JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。
{"sites":[
{"name":"Runoob", "url":"www.runoob.com"},
{"name":"Google", "url":"www.google.com"},
{"name":"Taobao", "url":"www.taobao.com"}
]}复制代码
JSON 格式仅仅是一个可以被任何编程语言读取及作为数据格式传递的文本。
语法规则:
- 数据为 键/值 对。
- 数据由逗号分隔。
- 大括号保存对象
- 方括号保存数组
JSON 字符串转换为 JavaScript 对象
通常我们从服务器中读取 JSON 数据,并在网页中显示数据。
首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据,然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象
函数 | 描述 |
---|---|
JSON.parse() | 用于将一个 JSON 字符串转换为 JavaScript 对象。 |
JSON.stringify() | 用于将 JavaScript 值转换为 JSON 字符串。 |
javascript:void(0)
javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。
语法格式如下:
<head>
<script >
<!--
void func()
javascript:void func()
或者
void(func())
javascript:void(func())
//-->
</script>
</head>复制代码
href="#"与href="javascript:void(0)"的区别:
# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。
而javascript:void(0), 仅仅表示一个死链接。
在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# id。