第 1 章 JavaScript 简介
- 虽然 JavaScript 和 ECMAScript 通常被人们用来表达相同的含义,但 JavaScript 的含义比 ECMA-262 要多得多
- 一个完整的 JavaScript 由三个不同部分组成 核心(ECMAScript)文档对象模型(DOM)浏览器对象模型(BOM)
第 2 章 在 HTML 中使用 JavaScript
-
<script> 定义了 6 个属性
- async 可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作
- charset 可选。表示通过 src 属性指定的代码的字符集。大多数浏览器会忽略它,属性很少用到
- defer 可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。
- language 已废弃。
- src 可选。
- type 可选。可以看成 language 的代替属性;表示脚本语言的内容类型(也称为 MIME 类型)虽然 text/javascript 和 text/ecmascript 都已经不被推荐使用,但人们一直以来使用过的都还是 text/javascript。实际上,服务器在传送 JavaScript 文件时使用的 MIME 类型通常是 application/x-javascript,但在 type 中设置这个值却可能导致脚本被忽略。另外在非 IE 浏览器中还可以使用以下值:application/javascript 和 application/ecmascript。考虑到约定俗称和最大限度的浏览器兼容性,目前依旧还是 text/javascript、不过这个属性并不是必须的,如果没有指定这个属性,其默认值仍为 text/javascript
- 在 XHTML 中的用法 这种格式在所有现代浏览器中都可以正常使用,虽然有几分 hack 的味道,但他能通过 XHTML 验证,而且对 XHTML 之前的浏览器也会平稳退化
<script>
//<![CDATA[function demo(a, b) {...}
//]]>
</script>
- 文档模式 对于标准模式,可以通过使用下面任何一种文档类型来开启
<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 严格型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd">
<!-- HTML 5 -->
<!DOCTYPE html>
- <noscript> 元素 浏览器不支持脚本或被禁用时显示
<html>
<head>
<title>Example</title>
</head>
<body>
<noscript>
<p> 本页面需要浏览器支持(启用)JavaScript</p>
</noscirpt>
</body>
</html>
第 3 章 基本概念
- 函数名不能使用关键字(typeof 不行但 typeOf 可以,区分大小写)
-
标识符就是指变量、函数、属性的名字,或者函数的参数。
- 第一个字符必须是一个字母、下划线(_)或者一个美元符号($)
- 其他字符可以是字母、下划线、美元符号或者数字
- 严格模式 在严格模式下 ECMAScript3 中的一些不确定的行为将得到处理,而且某些不安全的操作也会抛出错误。
// 在整个脚本顶部添加
"use strict";
// 在函数内部上方使用
function deSmoething() {
"use scrict";
// 函数体
}
- 关键字和保留字
break,do,instanceof,typeof,case,else,new,var,catch,finally,return,viod,continue,for,switch,while,debugger*,function,this,with,default,if,throw,delete,in,try
- 在函数中不用 var 声明变量会变成全局变量,有效但不推荐
function test() {message = 'hi'; // 全局变量}
test()
alert(message); // 'hi'
- 数据类型 ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number,String 还有 1 种复杂数据类型 Object。本质上 Object 是由一组无序名值对组成的。
- typeof 返回值 ”undefined”,”boolean”,”string”,”number”,”object”,”function” (typeof null 返回结果是 ”object”) (typeof 是操作符不是函数因此最好不要用括号)
- Undefined
// 在使用 bar 声明变量但未对其加以初始化,这个变量的值就是 undefined
var message;
alert(message == undefined); // true
alert(message === undefined); // true
// 下面这个变量并没有声明
// var age
alert(age); // 报错
// 对于尚未声明过的变量,只能执行一项操作,即使用 typeof 操作符检测其数据类型
// 对未经声明的变量使用 delete 不会导致错误,但这样没什么意义,而且在严格模式下确实会导致错误
var message;
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
// 两者都返回了 undefined 这个结果有其逻辑上的合理性。// 因为虽然这两种变量从技术角度看有本质区别,但实际上无论对那种变量也不可能执行真正的操作