• 再次感谢廖大
基本语法
  • JS不区分整数和浮点数,统一用Number表示。
  • JS有两种比较运算符:
    1)==比较:会自动转换数据类型再比较,很多时候得不到想要的结果。不推荐
    2)===比较:不会自动转换数据类型,如果数据类型不一致,返回false。推荐使用.
  • NaN是一个特殊的Number与所有其他值都不相等,包括它自己。NaN===NaN;//false
  • 只能使用isNaN()函数来判断NaN。
  • 浮点数在运算过程中会产生误差,要比较两个浮点数是否相等,只能计算它们之差的绝对值,是否小于某个阈值。
Math.abc(1 / 3 - (1 - 2 / 3)) < 0.0000001;//true
	1 / 3 === (1 - 2 / 3 );//false
  • 在Strict模式下运行的JS代码,强制通过var声明变量,未使用var声明变量的会运行错误。
  • 启动strict模式的方法是在JS代码第一行协商:‘usr strict’;
字符串
  • 多行字符串,ES6标准后可以使用反引号 `…`表示。
`这是一个
	多行
	字符串`;
  • 模板字符串,ES6新增功能,可以自动替换字符串中的变量
var name = '小明';
	var age = 20;
	var message = '你好, ${name},你今年${age}岁了!';
  • 常用字符串方法
toUpperCase();//变成大写
   toLowerCase();//变成小写
   indexOf();//搜索指定字符串出现的位置
   substring();//返回指定索引区间的子串。
数组
  • JS的一个数组里可以包含任意数据类型。[ 1, 2, 3.14, ‘hello’, null, true];
  • 可以直接通过修改数组的length属性来修改数组的长度。
  • 如果通过索引赋值时,索引超过了数组的长度,也会引起数组长度的变化。
  • 常用方法
//搜索指定元素的位置
   indexOf();
   
   //截取数组的部分元素,然后返回一个新的数组
   //起止参数包括开始索引,不包括结束索引
   //当不传入任何参数时,会从头到尾截取所有元素,可以通过这一点来复制一个数组
   slice();
   
   //从末尾添加若干元素
   push();
   //删除最后一个元素
   pop();

   //从头部添加若干元素
   unshift();
   //删除第一个元素
   shift();

   //排序
   sort();

   //颠倒翻转所有元素
   reverse();

   //从指定索引开始删除若干元素,然后再从该位置添加若干元素。
   var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
   arr.splice(2, 3, 'Google', 'Facebook'); // 从索引2开始删除3个元素,然后再添加两个元素:// 返回删除的元素 ['Yahoo', 'AOL', 'Excite']

   //把当前数组和另一个数组连接起来,并返回一个新的数组。并没有修改单签数组
   concat();

   //把当前数组的每个元素都用指定的字符串连接起来,然后返回连接后的字符串;
   join("-");
对象
  • JS的对象是一组由键值对组成的无序集合。
var person = {
   	name : 'Bob',
   	age: 20,
   	'middle-school': 'No.1 Middle School',
   	tags: ['js', 'web', 'mobile' ]
   };
  • 对象的键都是字符串类型,值可以是任意数据类型。
  • 可以使用person.name和person[‘name’]来访问那么属性。
  • 访问一个不存在的属性不会报错,而是返回undefined;
  • Js的对象是动态类型,可以自由地给对象添加或删除属性
  • 可以用in操作符来检测一个对象是否拥有某一属性。不过in判断的属性也可能是继承得到的。
  • 要判断一个属性是否是对象自身拥有而不是继承到的,可以用hasOwnProperty()方法。
  • 可以用for…in循环遍历出对象的属性名或数组的索引
  • iterable是ES6引入的新类型,Array、Map和Set都属于iterable类型。
  • 具有iterable类型的集合可以通过性的for…of循环来遍历。
  • for…in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。Array数组也是一个对象,它每个元素的索引被视为一个属性。
  • ES5.1标准引入了forEach()方法,它接受一个函数,每次迭代就自动回调该函数。
'use strict';
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array){
		// element:指向当前元素的值
		// index:指向当前索引
		// array:指向Array对象本身
		console.log(element + ', index = ' + index );
});