愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

Javascript学习总结——语言基础

file://开头的文件无法执行联网javascript代码

一、数据类型

1、javascript不区分整数和浮点数,统一用Number
2、NaN表示Not a Number,类型也是Number
3、Infinity表示无穷大,它也是Number类型
4、使用==比较时,会先进行自动类型转换再比较。而使用===时,则不自动转换直接比较,若类型不相等,直接返回false
5、NaN和任何数值都不相等,包括它自己(即NaN === NaN是false),判断NaN用isNaN函数
6、null表示空值,undefined一般用于判断函数是否传参
7、javascript将nullundefinedNaN''视为false,其他的视为true


二、变量命名

1、可以是中文
2、以A-Z、a-z、$、_ 开头的字符串(后面可以是A-Z、a-z、$、_、数字)
3、变量名中不能包含保留关键词


三、strict模式

1、如果一个变量不使用var先声明而直接使用,会被视为全局变量
2、使用var声明的变量,作用域为在它有效的区块内
3、开启strict模式后,将不允许未声明就使用变量,开启strict模式的方法为在头部加上 'use strict',这段代码在不支持strict模式的浏览器上,会被视为字符串,而在支持strict模式的浏览器上,则会以strict模式执行


四、循环

1、for( in )语句可以实现对对象的遍历
2、ES6中,为了统一集合类型,引入了iterable,其中,Array/Map/Set都属于iterable的数据类型,对于iterable的数据类型,可以使用 for(var x of aIterableVar) 来遍历一个集合对象,和for-in不同的是,for-of的x是直接取出元素,而非是一个索引值
3、ES5.1中还引入了 forEach 语法,即可以用以下形式来遍历一个iterable对象:

aIterableVar.forEach(function(element, index, selfVar) {
    // 对每个对象执行的语句体
    // element表示当前元素,index表示索引(键名),selfVar为当前被遍历的对象的引用
});



五、标准对象

1、typeof操作符可以获取对象的类型,总是返回一个字符串,表示当前对象类型

  • 1-1. 如123、3.14、NaN是number
  • 1-2. 如'str'是string
  • 1-3. 如true、false是boolean
  • 1-4. 如undefined, 是undefined!
  • 1-5. 数组[]、对象{}、null、Math等均是object
  • 1-6. Math.abs是function
  • 1-7. 因为数组、对象、null均是object,所以无法使用typeof来进行区分
    2、javascript中也有类似于Java的装箱,用于转换为object,如:
var n = new Number(100);
var b = new Boolean(true);
var s = new String("Hello");

但是要注意的是,装箱后均成为了object对象,所以,在比较的时候,实际上比较的是两个对象的地址是否相等(相等就是同一个对象),而不是值是否相等,所以:

var s1 = new String("Happy");
var s2 = new String("Happy");

console.log(s1 == s2); // false
console.log(s1 === s2); // false

3、不带new的Number/Boolean/String均是函数,作用则是将其他类型的数据转为number/boolean/string类型,如:

var s1 = Number("3.14");

console.log(typeof s1); // number

3-1. 注意,在使用Boolean的时候,非空字符串均转换为true(即使'false'也转为true),只有空串才会转为false
4、转换为string,使用String函数或者对象的toString(),如果是整数的话,要用形如123..toString(),小数则3.14.toString()即可。注意,undefined和null是没有toString()的!
5、判断Array用 Array.isArray(arr),判断null用 someVar === null
6、判断某个变量是否存在,用 typeof xxx === 'undefined' 即可