变量
声明
var x = 0;// valid
y = 0; // also valid
声明不是必需的。
类型
不需要进行类型声明的语言被称为弱类型语言。
注意,弱类型是不需要声明类型,而不是不存在类型的语言。
JavaScript是弱类型语言,包含字符串、数值、布尔值类型。
字符串:单引号与双引号无区分。包括它本身时需要转义。
数值:所有数值都是浮点数。
布尔值:true, false
字符串、数组、布尔值都被称为离散值。离散值在某一时刻只能具有一个值。
相对地,如果想在某一时刻使一变量对应多个值,我们可以使用数组。
var x = Array(4);
Array 是关键字。4 是可选的长度参数。
和 C 一样,下标从 0 开始。
数组可以被这样赋值。
var x = Array();
x[0] = 'cogs';
x[1] = "spoj";
x[2] = 'countonthetree';
var y = Array("haoi", 2017, "fake");
对,Array(3) 和 Array(3,3) 的行为完全不一致……前者创建一个3空元素的数组,后者创建一个长度为2,内容为两个3的数组。
事实上,js 中数组的能力远远超出我们以往认知中的 C/C++ 数组。来看看这样的用法:
var x = Array();
x['cydiater'] = Array('very', 'niubi');
x['rapiz'] = Array('is', 1, 'fish');
x['rapiz']['fans'] = Array('zqr', 'kzf');
- 一个数组可以包含不同类型的数据。
- 一个数组可以用字符串、数值作为下标。
- 一个数组可以包括数组。
所以你可以把数组看成任意离散值到值(离散或者不离散)的映射。
运算
常见的那些C运算符(算术、比较、逻辑、赋值)这里都有。
可以用+-对字符串进行拼接。
‘10’ + 20 会获得 ‘1020’。可见这里出现了隐式类型转换,并且数值被提升成了字符串。
从设计的角度来想一想这个事情。否则呢?把字符串转成数值显然是不太合理的,因为需要规定对溢出、编码等问题的处理方式。
流程控制
if, while, for, do…while 和 C 一样。
if(condition) {
statement
}
if () ;
while(condition) {
statement
}
while() ;
do {
statement
}while(condition)
do while();
for(a;b;c) {
statement
}
for(;;);
函数
终于来到这里。
function liveALife(gift, efforts) {
var threeyears = ['battle', 'commitment', 'ash'];
for(var i = 0; i < 3; i++) {
alert(threeyears[i]);
}
return false;
}
以
function
开头,括号中声明形参。弱类型,所以直接
function
, 直接写行参,return
不必需。对象
JS 中的对象,具有两种形式的数据,属性和方法。
假设我们有一个 GodCow
对象,我们可以这样声明它的实例。
var cydiater = new GodCow();
前面的 Array 就是 JavaScript 的一个内建对象。还有很多有用的对象被内建在 JS 中。