JavaScript

JavaScript代码可以直接嵌在网页的任何地方

==会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;=== 它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。由于JavaScript这个设计缺陷,始终坚持使用===比较。

NaN这个特殊的Number与所有其他值都不相等,包括它自己:NaN === NaN; // false
唯一能判断NaN的方法是通过isNaN()函数:isNaN(NaN); // true

浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

JavaScript的数组可以包括任意数据类型,例如:[1, 2, 3.14, 'Hello', null, true];
另一种创建数组的方法是通过Array()函数实现:new Array(1, 2, 3); // 创建了数组[1, 2, 3]

JavaScript定义了四种原始数据类型,除此之外,Javascript中的一切都是对象(object),string,number,boolean,undefined

JavaScript的对象

JavaScript的对象是一组由键-值组成的无序集合,键都是字符串类型,值可以是任意数据类型

var person = {
     
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};

JavaScript变量名是大小写英文、数字、$和_的组合,且不能用数字开头

用反引号 表示多行字符串,反引号在键盘的ESC下方,数字键1的左边

`这是一个
多行
字符串`;

用+号把多个字符串连接起来

字符串常见的操作:

var s = 'Hello, world!';
s.length; // 13
//获取字符串某个指定位置的字符
s[0]; // 'H'
s[6]; // ' '
s[7]; // 'w'
s[12]; // '!'
s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined

s.toUpperCase();
s.toLowerCase();

//indexOf()会搜索指定字符串出现的位置
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'

字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果

直接给Array的length赋一个新的值会导致Array大小的变化

var arr = [1, 2, 3];
arr.length; // 3
arr.length = 6;
arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr变为[1, 2]

如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化

var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']

indexOf
slice
push
pop
unshift
shift
sort
reverse
splice
concat
join

JavaScript把nullundefined0NaN和空字符串''视为false,其他值一概视为true

关键字arguments
rest参数

你可能感兴趣的:(JavaScript)