JavaScript 程序可以使用 标签插入到 HTML 的任何地方。
script 标签之前...
...script 标签之后
标签中包裹了 JavaScript 代码,当浏览器遇到
标签,代码会自动运行。
如果你有大量的 JavaScript 代码,我们可以将它放入一个单独的文件。
脚本文件可以通过 src
属性添加到 HTML 文件中。
这里,/path/to/script.js
是脚本文件的绝对路径(从站点根目录开始)。
也可以提供相对于当前页面的相对路径。比如,src="script.js"
意思是来自当前文件夹的 "script.js"
文件。
我们还可以提供一个完整的 URL 地址,例如:
标签将 JavaScript 代码添加到页面中。type
和 language
属性不是必需的。
这种方式插入。一个 变量 是数据的“命名存储”。我们可以使用变量来保存商品、访客和其他信息。
在 JavaScript 中创建一个变量,我们需要用到 let
关键字。
下面的语句创建(换句话说,声明或者定义)了一个名称为“message”的变量:
let message;
现在,通过赋值操作符 =
为变量添加一些数据:
let message;
message = 'Hello!';
alert(message); // 显示变量内容
var
而不是 let
var message = 'Hello';
var
关键字与 let
大体相同,也用来声明变量,但稍微有些不同,也有点“老派”。
JavaScript 的变量命名有两个限制:
$
和 _
。区分大小写
命名为 apple
和 AppLE
的变量是不同的两个变量。
允许非英文字母,但不推荐
保留字
单词 let
、class
、return
、function
被保留。
声明一个常数(不变)变量,可以使用 const
而非 let
。使用 const
声明的变量称为“常量”。它们不能被修改,尝试这样做就会造成错误:
const myBirthday = '18.04.1982';
myBirthday = '01.01.2001'; // 错误,不能对常量重新赋值
这些常量使用大写和下划线命名。
const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";
// ...当需要选择一个颜色
let color = COLOR_ORANGE;
alert(color); // #FF7F00
好处:
COLOR_ORANGE
比 "#FF7F00"
更容易记忆。COLOR_ORANGE
而言,"#FF7F00"
更容易输错。COLOR_ORANGE
比 #FF7F00
更有含义。
我们可以声明变量来存储数据。可以通过使用 var
、let
或者 const
来完成。
let
– 新时代的变量声明方式。Chrome(V8)中代码必须开启严格模式以使用 let
。var
– 旧时代的变量声明方式。一般情况下,我们不会使用它。但是,我们会在 旧时的 "var" 章节介绍 var
和 let
的微妙差别,以防你需要它们。const
– 类似于let
,但是变量的值无法被修改。变量应当以一种容易理解变量内部是什么的方式进行命名。
number 类型用于整数和浮点数。
数字有很多操作,比如,乘法 *
、除法 /
、加法 +
、减法 -
等等。
除了常规的数字,还包括所谓的“特殊数值”也属于这种类型:Infinity
、-Infinity
和 NaN
。
let n = 123;
n = 12.345;
alert( 1 / 0 ); // Infinity
alert( "not a number" / 2 ); // NaN, 这样的除法是错误的
alert( "not a number" / 2 + 5 ); // NaN
JavaScript 中的字符串必须被包含在引号里面。没有 character 类型
在 JavaScript 中,有三种包含字符串的方式。
"Hello"
.'Hello'
.`Hello`
.双引号和单引号都是“简单”引用,在 JavaScript 中两者并没有什么差别。
反引号是功能扩展的引用,允许通过 ${…}
,将变量和表达式嵌入到字符串中
let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed ${str}`;
let name = "John";
// embed a variable
alert( `Hello, ${name}!` ); // Hello, John!
// embed an expression
alert( `the result is ${1 + 2}` ); // the result is 3
boolean 类型仅包含两个值:true
和 false
。
let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked
特殊的 null
值不属于上述任何一种类型。
它构成一个独立的类型,只包含 null
值:
let age = null;
相比较于其他语言,JavaScript 中的 null
不是一个“对不存在对象的引用”或者“null 指针”。
仅仅是一个含义为“无”、“空”或“值未知”的特殊值。
上面的代码表示,由于某些原因,age
是未知的。
特殊值和 null
一样,自成类型。
undefined
的含义是 未被赋值
。
如果变量被声明,而未被赋值,那么它的值就是 undefined
:
let x;
alert(x); // 弹出 "undefined"
typeof
运算符返回参数的类型。当我们想要分别处理不同类型值的时候,或者简单地进行检验,就很有用。
它支持两种语法形式:
typeof x
。typeof(x)
。typeof undefined // "undefined"
typeof 0 // "number"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
JavaScript 中有七种基本的数据类型。
number
用于任何类型的数字:整数或者浮点数。string
用于字符串。一个字符串可以包含一个或多个字符,所以没有单独的单字符类型。boolean
用于 true
和 false
。null
用于未知的值 —— 只有一个 null
值的独立类型。undefined
用于未定义的值 —— 只有一个 undefined
值的独立类型。object
用于更复杂的数据结构。symbol
用于唯一的标识符。typeof
运算符可以查看变量的类型。
typeof x
或者 typeof(x)
。"string"
。null
返回 "object"
—— 这是语言中的一个错误,实际上它并不是一个对象。