JavaScript学习笔记(1)
[toc]
* 一个完整的JavaScript
实现由三个不同部分组成:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)
* ECMAScript, 由ECMA-262定义, 提供核心语言功能
* DOM, 提供访问和操作网页内容的方法和接口
* BOM, 提供与浏览器交互的方法和接口
HTML中使用JavaScript
使用script
元素
位置
一般将全部JavaScript引用放在
body
元素后, 避免浏览器加载页面时出现明显的延迟- 延迟与异步脚本
script
标签定义了defer
属性。这个属性的用途是表明脚本在执行时不会影响页
面的构造。即脚本会被延迟到整个页面都解析完毕后再运行。
使用:<script type="text/javascript" defer="defer" src="example1.js"></script>
script
元素定义了async
属性。但与defer
不同的是,标记为async
的脚本并不保证按照指定它们的先后顺序执行
defer
和async
属性都只适用于外部脚本
嵌入JavaScript代码
不推荐,尽量使用外部文件导入。
可维护性、可缓存、适应
所有
script
元素都会按照它们在页面中出现的先后顺序依次被解析。
基本概念
语法
- 区分大小写
- 标识符 一般采用驼峰大小写格式,第一个字符必须是
字母
、_
或$
,例:firstSecond、_hood、… - 注释 包括行内注释和快级注释
//
/* */
- 严格模式 启用则在顶部添加”use strict”
- 语句 以分号结尾
变量
- 用
var
定义,用var 操作符定义的变量将成为定义该变量的作用域中的局部变量
数据类型
- 基本数据类型:
Undefined
Null
Boolean
Number
String
- 复杂数据类型:
Object
Number
浮点数值
关于浮点数值计算会产生舍入误差的问题
例如:
if (a + b == 0.3) { alert("you got 0.3"); }
Wrong!- NaN()
- 数值转换: parseInt() parseFloat() Number()
String
- 双引号或单引号表示
- 不可变
- toString()方法 转换为字符串
Object
- 创建方式:
var o = new Object();
操作符
- 一元操作符:++、–、+、-
- 位操作符;~、&、|、^、<<、>>、>>>(无符号右移)
- 布尔操作符:!、&&、||、
- 乘性操作符:*、/、%、
- 加性操作符:+、-
- 关系操作符:<、>、<=、>=
- 相等操作符:==、!=、===、!==
- 条件操作符:
variable = boolean_expression ? true_value : false_value;
- 赋值操作符:=
- 逗号操作符:,
语句
- if
- do-while
- while
- for
- for-in
for (property in expression) statement;
- label
label: statement
可以在代码中添加标签,以便将来使用 - break、continue
with
with (expression) statement;
作用是将代码的作用域设置到一个特定的对象中
例如:var qs = location.search.substring(1); var hostName = location.hostname; var url = location.href;
with(location){ var qs = search.substring(1); var hostName = hostname; var url = href; }
- switch
函数
function functionName(arg0, arg1,...,argN) {
statements
}
要么让函数始终都返回一个值,要么永远都不要返回值。
- ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。
- 没有重载