第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声明变量但未对其加以初始化,这个变量的值就是undefinedvar message;alert(message == undefined); // truealert(message === undefined); // true// 下面这个变量并没有声明// var agealert(age); // 报错// 对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型// 对未经声明的变量使用delete不会导致错误,但这样没什么意义,而且在严格模式下确实会导致错误var message;// var agealert(typeof message); // "undefined"alert(typeof age); // "undefined"// 两者都返回了undefined这个结果有其逻辑上的合理性。// 因为虽然这两种变量从技术角度看有本质区别,但实际上无论对那种变量也不可能执行真正的操作