- JavaScript 是一种轻量级的编程语言。
- JavaScript 是可插入 HTML 页面的编程代码。
- JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
- HTML 定义了网页的内容
- CSS 描述了网页的布局
- JavaScript 网页的行为
脚本放置于 或者 中,放在 <script> 标签中的脚本与外部引用的脚本运行效果完全一致
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
- 变量在函数内声明,变量为局部作用域。
- 变量在函数外定义,即为全局变量。
- 变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量
null是一个只有一个值的特殊类型。表示一个空对象引用。
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
5 + null // 返回 5 null 转换为 0
"5" + null // 返回"5null" null 转换为 "null"
"5" + 1 // 返回 "51" 1 转换为 "1"
"5" - 1 // 返回 4 "5" 转换为 5
search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
修饰符 可以在全局搜索中不区分大小写:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
元字符是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
\d | 查找数字。 |
\s | 查找空白字符。 |
\b | 匹配单词边界。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词:
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。
JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。
JavaScript 只有声明的变量会提升,初始化的不会。
为什么使用严格模式:
-
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
-
消除代码运行的一些不安全之处,保证代码运行的安全;
-
提高编译器效率,增加运行速度;
-
为未来新版本的Javascript做好铺垫。
switch 语句会使用恒等计算符(===)进行比较
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
-
字符串中只返回第一个数字。
-
开头和结尾的空格是允许的。
-
如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
document.write(parseFloat("10") + "<br>"); document.write(parseFloat("10.33") + "<br>"); document.write(parseFloat("34 45 66") + "<br>"); document.write(parseFloat(" 60 ") + "<br>"); document.write(parseFloat("40 years") + "<br>"); document.write(parseFloat("He was 40") + "<br>"); 10 10.33 34 60 40 NaN
isFinite() 函数用于检查其参数是否是无穷大。
- number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false
document.write(isFinite(123)+ "<br>");
document.write(isFinite(-1.23)+ "<br>");
document.write(isFinite(5-2)+ "<br>");
document.write(isFinite(0)+ "<br>");
document.write(isFinite("Hello")+ "<br>");
document.write(isFinite("2005/12/12")+ "<br>");
true
true
true
true
false
false
面向对象语言中 this 表示当前对象的一个引用。
JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。
- 方法,this 表示该方法所属的对象。
- 单独使用,this 表示全局对象。
- 函数,this 表示全局对象。
- 函数,在严格模式下,this 是未定义的(undefined)。
- 事件,this 表示接收事件的元素。
- 类似 call() 和 apply() 方法可以将 this 引用到任何对象。
-
var不具备块级作用域, {} 外能被访问。
let在 let 命令代码块 {} 有效,在 {} 之外不能访问。(ES6)
-
函数体或代码块外,作用域都是全局
-
html代码,var全局作用域window对象,let不属于window对象
-
let var重置变量
- var 关键字声明的变量在任何地方都可以修改
- 相同作用域或块级作用域,不能用 let 关键字来重置 var 关键字声明的变量
- 相同作用域或块级作用域,不能用 let 关键字来重置 let 关键字声明的变量:
- 相同作用域或块级作用域,不能用 var 关键字来重置 let 关键字声明的变量
- let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值
-
let var变量提升
- var 关键字定义的变量可以先使用再声明
- let 关键字定义的变量需要先声明再使用
-
const 重置变量
- 在相同的作用域或块级作用域中,不能使用 const 关键字来重置 var 和 let关键字声明的变量:
- 在相同的作用域或块级作用域中,不能使用 const 关键字来重置 const 关键字声明的变量:
- const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的
-
const变量提升
- const 关键字定义的变量需要先声明再使用。
-
# 包含了一个位置信息,默认的锚是**#top** 也就是网页的上端
使用 # 来定位页面的具体位置,格式为:# + id
-
死链接javascript:void(0)
- 操作符指定要计算一个表达式但是不返回值
<a href="javascript:void(alert('Warning!!!'))">点我!</a>
<a href="javascript:void(0);">点我没有反应的!</a>
<a href="#pos">点我定位到指定位置!</a>
<p id="pos">尾部定位点</p>
同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效果更高
JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。
- JSON 英文全称 JavaScript Object Notation
- JSON 是一种轻量级的数据交换格式。
- JSON是独立的语言 *****
- JSON 易于理解。
- 读取 XML 文档
- 使用 XML DOM 来循环遍历文档
- 读取值并存储在变量中
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
- JSON 和 XML 数据都是 "自我描述" ,都易于理解。
- JSON 和 XML 数据都是有层次的结构
- JSON 和 XML 数据可以被大多数编程语言使用
- JSON 不需要结束标签
- JSON 更加简短
- JSON 读写速度更快
- JSON 可以使用数组
最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析
JSON.parse() :字符串转换为 JavaScript 对象
JSON.stringify():将 JavaScript 值转换为 JSON 字符串。
- 数据为 键/值 对。
- 数据由逗号分隔。
- 大括号保存对象
- 方括号保存数组
- AJAX = 异步 JavaScript 和 XML( Asynchronous JavaScript and XML
- AJAX 是一种用于创建快速动态网页的技术。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
- 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
- 运用XHTML+CSS来表达资讯;
- 运用JavaScript操作DOM(Document Object Model)来执行动态效果;
- 运用XML和XSLT操作资料;
- 运用XMLHttpRequest或新的Fetchasync:true(异步)或 false(同步) API与网页服务器进行异步资料交换;
- 注意:AJAX与Flash、Silverlight和Java Applet等RIA技术是有区分的。
- 创建 XMLHttpRequest 对象
- 所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象
- 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象
- 向服务器发送请求
- 使用 XMLHttpRequest 对象的 open() 和 send() 方法
- open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。
- method:请求的类型(GET 或 POST)
- url:文件在服务器上的位置
- async:true(异步)或 false(同步)
- send(string) 将请求发送到服务器。
- string:仅用于POST请求
- open(method,url,async) 规定请求的类型、URL 以及是否异步处理请求。
- 使用 XMLHttpRequest 对象的 open() 和 send() 方法
- 服务器响应
- responseText:获取字符串形式的响应数据
- responseXML:获取XML形式的响应数据
- XMLHttpRequest 对象的三个重要的属性
- onreadystatechange
- 存储函数,readyState属性改变,调用该函数
- readyState
- 0:请求未初始化
- 1:服务器连接已建立
- 2:请求已接受
- 3:请求处理中
- 4:请求已完成,响应已就绪
- status
- 200:“OK”
- 404:未找到页面
- onreadystatechange
与 POST 相比,GET 更简单也更快,在大部分情况下都能用。
在以下情况中,请使用 POST 请求:
-
无法使用缓存文件(更新服务器上的文件或数据库)
-
向服务器发送大量数据(POST没有数据量限制)
-
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
setRequestHeader(header,value) 向请求添加 HTTP 头。
- header: 规定头的名称
- value: 规定头的值
jQuery是一个JavaScript函数库。
jQuery是一个轻量级的"写的少,做的多"的JavaScript库。
jQuery库包含以下功能:
- HTML 元素选取
- HTML 元素操作
- CSS 操作
- HTML 事件函数
- JavaScript 特效和动画
- HTML DOM 遍历和修改
- AJAX
- Utilities
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。
基础语法: $(selector).action()
- 美元符号定义 jQuery
- 选择符(selector)"查询"和"查找" HTML 元素
- jQuery 的 action() 执行对元素的操作
实例:
- $(this).hide() - 隐藏当前元素
- $("p").hide() - 隐藏所有
元素
- $("p.test").hide() - 隐藏所有 class="test" 的
元素
- $("#test").hide() - 隐藏 id="test" 的元素
页面对不同访问者的响应叫做事件。
事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。
鼠标事件 | 键盘事件 | 表单事件 | 文档/窗口事件 |
---|---|---|---|
click | keypress | submit | load |
dblclick | keydown | change | resize |
mouseenter | keyup | focus | scroll |
mouseleave | blur | unload | |
hover |