# JavaScript 编程基础

# 1. 基础知识

JavaScript 是一种可以用来给网页增加交互性的编程语言。

JavaScript 脚本也是一种程序,它们包含在

  • HTML 页面内部(原先编写脚本的方式),或者
  • 驻留在外部文件中(现在的首选方法)。
<script type="text/javascript" src="js/hello.js"></script>
<script type="text/javascript">
    xxx;
    xxx;
    xxx;
</script>

在 HTML 页面上,因为脚本文本包围在 <script> 标签中,所以它不会显示在用户的屏幕上,而 Web 浏览器知道应该运行 JavaScript 程序。

<script> 标签常常放在 HTML 页面的 <head> 部分中。但是如果愿意,也可以将脚本放在 <body> 部分中。

# 2. 值和变量

值类型:

类 型 描 述
数字 任何数字值
字符串 引号中的字符
布尔值(Boolean) true 或 false
空值(null) 空且无含义
对象 与对象相关联的任何值
函数 函数返回的值

typeof 操作符是用来检测变量的数据类型。对于值或变量使用 typeof 操作符会返回如下字符串:

类型字符串 说明
'undefined' 未定义。表示该变量从未被赋过值。
'boolean' 布尔值
'string' 字符串
'number' 数值
'object' 表示对象,或 null。注意,如果变量的值为 null,此处也是返回 object,表示空对象。
'function' 函数。函数是对象的一种,但又是极特殊的一种。

# 3. 定义变量

要在 JavaScript 中定义变量,需要使用 var 关键字,然后为变量指定一个名字。

var str1;
var str2 = "hello world";

JavaScript 是区分大小写的。这意味着 HELLOhelloHello 并不相同。

作为动态语言,JavaScript 中变量的类型随着其所存储的数据的类型而变化。

JS 中的 基本数据类型 只有三种:数字字符串布尔值

var tmp1 = 10;
var tmp2 = "hello world";
var tmp3 = true;

注意

  • JS 不区分 整数浮点数
  • JS 中也没有 字符 类型。

JavaScript 中数组变量的声明不需要 [] 符号,语法仍然是 var 变量名; 的形式,不过初始化还是 = [xxx, xxx, xxx] 的形式。

JavaScript 中多出一个 undefined 关键字,如果对一个变量从未赋过值,那么该变量的类型就是 undefined 类型。

JS 中多出一个判断运算符 ***===***,它被称为『严格判等运算符』。还是因为变量类型的原因,JS 中允许出现两个变量 “类型不一样,但值一样” 的情况(这一点是 Java 中所没有的)。而严格判等运算符要求两个变量类型和值都必须一样。

注意 undefined 是派生自 null 的,因此 JavaScript 中对它们的相等性测试(==)会返回 true。常用的比较“套路”是结合 typeof 比较:alert(typeof xx == typeof yy)

# 4. 运算符

# 5. 条件查询与布尔测试

条件执行是指程序在只有某些条件为真时,才执行一条语句。在 JavaScript 语言中,使用 if 语句进行条件执行。

注意

块语句(虽然看起来一大坨)也是一条语句!

if 语句的常规形式如下,其中 else 条件是可选的:

if (布尔表达式) 
  一条语句
else  
  一条语句
  • 如果布尔表达式的值是真(true),那么第一条语句会被执行。如果布尔表达式的值是假(false),那么执行的就是第二条语句。

另外,if 语句(无论是否有 else 部分)整体也算一条语句!

# 5. 分支与循环

# 6. 数组

本质上,JavaScript 没有所谓的『数组』,JavaScript 中的数组实际上就是一个对象。

每个数组都有一个 length 属性。和其他语言不一样,JavaScript 数组的 length 是没有上界的。

如果使用大于或等于 length 的数组作为下标,那么 length 将增大来容纳新元素。

你可以直接设置 length 的值。设置为更大的值时,系统无须给数组分配更多的空间。设置为更小的值时,所有下标大于或等于 length 的属性都被删除。

length 属性的值是数组最大下标加 1 。它不一定等于数组里元素的个数。

数组更多的内置方法参见官方 API 文档。

# 7. 函数

函数的定义包括:function 关键字、描述函数用途的名字、包含在 () 中的 0 个和多个参数的列表,以及由一条或多条代码语句组成的块。

JavaScript 中函数和方法的声明不需要声明函数/方法返回值类型,形参中的 var 关键字也可以省略。

JavaScript 中函数/方法是“一等公民”可以对变量赋值,自然也可以作为参数和返回值。

没有名字的函数被称为匿名函数,常用于对变量的赋值。

function myFunction() {
    console.info("hello world");
}

# 8. 变量的作用域