序言
刚刚工作的时候,读了一遍犀牛书和高程,但是对于其中的内容不甚了解,大概的快速过一遍,很多知识知其然不知其所以然。在工作一年之后,重新捡起来在看一遍,实践和理论结合才能获得更好的效果,这次笔记主要是为了再次牢记一些基础知识,加深对于js这种语言的理解。写的并不全,主要是为了自己加深印象。
1、类型,值和变量
在JavaScript中,数据总的会分为两种类型,原始类型与对象类型。
原始类型包括数字、字符串和布尔值,同时,在原始类型中,有两种特殊的类型,null(空)和undefined(未定义)。除了这些原始类型以为的东西,都是对象类型。
对象就是属性的集合,属性就是‘键\值对’。普通的对象是属性的无序集合,但是有一些特殊的对象不是,比如数组。数组是对象类型,但是数组是有顺序的。另一种特殊的对象就是函数,函数可以被执行,但是同样可以进行对象操作。除了以上数组类和函数类意外,JavaScript还提供了三种类分别是,日期(Date)、正则(RegExp)和错误(Error)。
JavaScript中的数字运算
除了基本的加减乘除运算外,JavaScript还提供Math对象进行复杂运算。Math对象的属性如下
Math.pow(3,3) 计算3的三次幂
Math.round(.6) 四舍五入计算
Math.ceil(.3) 向上求整
Math.floor(.3) 向下求整
Math.abs(-5) 求绝对值
Math.max(x,y,z) 返回最大值
Math.min(x,y,z) 返回最小值
Math.random() 返回一个0到1的伪随机数
Math.PI 返回圆周率
Math.E e:自然对数的底数
Math.sqrt(3) 3的平方根
Math.sin(0)
Math.cos(0)
Math.log(0)
当计算超出JavaScript的计算上线时,会发生溢出,并返回无限大(infinity)
在JavaScript中,所有的实数都是由一个近似的浮点数表示,所以在计算数值的时候,如果有必要的话,需要首先进行处理,然后再赋值。
JavaScript中的文本
转义字符 \ ex ‘you\‘re right,it can\‘t be a quote‘
JavaScript中的数组操作
var a = ‘hello,world‘
a.charAt(0) 返回‘h‘ 返回第0个字符
a.substring(1,4) 返回ell 返回第2个到第4个字符,与slice不同,两个参数顺讯可以颠倒
a.slice(1,4) 返回ell 但是与substring不同的是slice可以接受负数
a.indexOf(‘l‘) 返回2 首次l出现的位置
a.lastIndexOf(‘l‘) 返回10 最后一次出现l的位置
a.indexOf(‘l‘,3) 返回3,第三个字符之后出现l的位置
a.split(‘,‘) 返回数组 以,划分
a.replace(‘h‘,‘H‘) 返回被替换后的字符串
在JavaScript中,字符串是不能被改变的,以上操作返回的都是新的字符串
JavaScript中的布尔值
在JavaScript中 undefined null 0 -0 NaN ‘‘ 都是false。除了这6个值,其他值都不会被当成false 包括空数组和空对象
null和undefined
在JavaScript中 对null进行typeof运算,返回值为object。也就是说null其实是一种特殊的对象,他的含义是非对象,他表示数字、字符串、对象没有值。对于undefined来说,他表示的未定义。对undefined进行typeof操作 返回的是undefined
JavaScript中包装对象
JavaScript中的对象是一种复合值:他是属性或命名值得集合,可以通过‘.‘符号来引用属性。当属性值是一个函数的时候,称其为方法。通过obj.m()来调用。对于字符串等非对象,他们也有属性,从根本上看,是在对其进行操作的时候,新创建了一个对象,在操作结束后销毁了那个对象。
JavaScript中布赫编的原始值和可变的对象引用
JavaScript中的原始值(undefined,null,布尔值,数字,字符串)都是只读的,所有对其的操作都是返回一个新的值。而对于赋值符号=,很多时候只是多了一个指向,而不是多了一个数组。比如 var a = [1,2,3];var b = a;这是a和b指向的是同一个数组,对a进行操作,b也会改变。
JavaScript中的转换
JavaScript中的转换相等
null==undefined;
‘0‘==0;
0==flase;
‘0‘==flase;
JavaScript中的显示类型转换
上面的转换时自动的转换,JavaScript中同样提供了主动的转换函数
Number(‘3‘) 返回3;
String(false) 返回‘flase‘
Boolean([]) 返回true
Object(3) 返回New Number(3)
2、表达式
in运算符
var point = {x:1,y:2}
‘x‘ in point 返回true
instanceof运算符
var d = new Date();
d instanceof Date(); ture 因为d是由Date()创建
d instanceof Object ;true d是一个对象
typeof运算符
typeof a; 返回a的类型