代码风格:
- 每句结尾不用加分号;
- 单行注释用//,多行注释用/*...需要注释掉的代码....*/
- 严格区分大小写
- 优雅的代码需要注意锁进
基础知识:
-
Number:JavaScript不区分整数和浮点数,统一用Number表示。十六进制用0x前缀和0-9,a-f表示。
-
字符串:以单引号'或双引号"括起来
\n
表示换行,\t表示制表符,字符
\
本身也要转义,所以\\
表示的字符就是\。多行字符串用反引号 ` ... ` 表示。
`这是一个
多行
字符串`;
如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:
'I\'m \"OK\"!';
表示的字符串内容是:I'm "OK"!
多个字符串连接起来,可以用+
号连接。或者用 反引号`.......`和 ${.....}连接。
var name = '小明';
var age = 20;
var message = '你好, ' + name + ', 你今年' + age + '岁了!';
alert(message);
----------------------------------------------
var name = '小明';
var age = 20;
var message = `你好, ${name}, 你今年${age}岁了!`;
alert(message);
字符串是不可变的.下面这些方法本身不会改变原有字符串的内容,而是返回一个新字符串
toUpperCase()
把一个字符串全部变为大写。
toLowerCase()
把一个字符串全部变为小写。
indexOf()
会搜索指定字符串出现的位置。
substring()
返回指定索引区间的子串。
var s = 'HEllo';
var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower
lower; // 'hello'
var s = 'hello, world';
s.indexOf('world'); // 返回7
s.indexOf('World'); // 没有找到指定的子串,返回-1
var s = 'hello, world'
s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
s.substring(7); // 从索引7开始到结束,返回'world'
-
布尔值:
true
、false
-
比较运算符:
JavaScript允许对任意数据类型做比较。
false == 0; // true
false === 0; // false
要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:
第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:
NaN === NaN; // false
唯一能判断NaN的方法是通过isNaN()函数:
isNaN(NaN); // true
最后要注意浮点数的相等比较:
1 / 3 === (1 - 2 / 3); // false
浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
-
null和undefined
null表示“空”,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串。
用null表示一个空的值,而undefined表示值未定义。大多数情况下,用null。undefined仅仅在判断函数参数是否传递的情况下有用。
-
数组
两种创建方式。更多的用第二种
new Array(1, 2, 3); // 创建了数组[1, 2, 3]
var arr = [1, 2, 3.14, 'Hello', null, true]
arr[0]; // 返回索引为0的元素,即1
arr[5]; // 返回索引为5的元素,即true
arr[6]; // 索引超出了范围,返回undefined
-
对象
JavaScript的对象是一组由键-值组成的无序集合。Ex:
var person = {
name: 'Bob',
age: 20,
tags: ['js', 'web', 'mobile'],
city: 'Beijing',
hasCar: true,
zipcode: null
};
要获取一个对象的属性,我们用对象变量.属性名的方式:
person.name; // 'Bob'
person.zipcode; // null
-
变量
变量名是大小写英文、数字、$
和_
的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if
、while
等。申明一个变量用var
语句。使用等号=
对变量进行赋值
-
strict模式(精确模式)
申明一个变量必须用var
语句。在strict模式下运行的JavaScript代码,强制通过var
申明变量,未使用var
申明变量就使用的,将导致运行错误。