JS高级程序设计笔记-ECMA基础

一、原始值和引用值

原始值:存储在栈(stack)中的简单数据段,它们的值直接存储在变量访问的位置。

引用值:存储在堆(heap)中的对象,存储在变量处的值是一个指针,指向存储对象的内存处。

二、原始类型:(基本数据类型)

undefined、null、boolean、number、string

三、typeof运算符(判断基本数据类型)

输出结果:undefined、boolean、number、string、object

1、undefined

当一个未声明的变量和一个声明但并未初始化的变量使用typeof都会输出undefined,如下代码所示

var value1;
//var value2
console.log(typeof value1);//undefined
console.log(typeof value2);//undefined

PS:当函数无明确返回值时,返回的也是undefined。

2、null类型

undefined派生自null。null表示尚未存在的对象。

3、number类型

(1)八进制:首数字为0;

(2)十六进制:首数字为0x;

(3)ECMAScript默认把6个或6个以上的前导0的浮点数转换为科学计数法;

(4)几个被定义为Number类型的特殊值:

Number.MAX_VALUE

Number.MIN_VALUE

(5)isFinit()方法:确定该数不是无穷大

(6) NaN (非数),特性:不能用于算数计算;

                与自身不相等;

(7) isNaN()方法:确定是否为NaN;

4、String类型

首字符从位置0开始,字符串最后一个字符的位置是字符串的长度减1;

四、转换

1、转换成字符串:toString()方法

Boolean类型:输出“true”或“false”

Number类型:根据两种模式:

       默认模式:相应数字值得字符串输出;

       基模式:输出不同进制形式数字对应的字符串;

2、转换成数字

只有对string类型调用这些方法才能正确运行,对其他类型返回NaN;

parseInt():

运行机制:从位置0开始查找判断是否为有效数字,如果不是返回NaN,如果是则继续向后查找,直到找到非有效数字,将之前的字符串转换为数字。

PS:parseInt()方法有基模式,将二进制、八进制、十六进制的字符串转化为整数,由第二个参数指定。

parseFloat():

运行机制:从位置0开始查找每个字符,直到出现第一个非有效字符,将之前的字符串转化为数字。第一个出现的小数点是有效字符,第二个是无效的。

PS:字符串必须以十进制形式表示浮点数,不能用八进制或十六进制形式,没有基模式。

3、强制类型转换

Boolean(value)

(1)转换成Boolean类型;

(2)转换的值至少是有一个字符的字符串、非0数字或对象时,返回true;

(3)转换的值为空字符串、数字0、undefined、Null,返回false;

Number(value):转换成数字;

(1)与parseInt(),parseFloat类似,但转化的是整个值,不是部分值。如果字符串值能完整的被转换,Number()将判断调用parseInt()还是parseFloat()。

String(value):将任何值转换成字符串;

五、引用类型

1、Object类

2、Boolean类

3、Number类

(1)toFixed()方法:返回具有指定位数小数的数字的字符串表示,参数是几说明了应该显示几位小数。

    toExponential()方法:返回科学计数法表示的数字的字符串形式。参数是指定要输出的小数的位数。

    toPrecision()方法:参数表示数的数字总数,不包括指数。

PS:这些方法都会进行舍入操作。

4、String类

(1)valueOf()和toString()方法都会返回string类型的原始值;

var oStr = new String("hello");
console.log(oStr.valueOf() === oStr.toString()) //true

(2)length属性

(3)charAt():返回包含指定位置处的字符的字符串;

    charCodeAt():返回包含指定位置处的字符的字符代码;

    concat():将一个或多个字符串连接到String对象的原始值上,该方法会保持原始的String对象不变;

(4)indexOf():从位置0开始检索,返回指定的子串在另一个字符串中的位置。(-1表示没有找到)

    lastIndexOf():从字符串结尾开始检索,返回指定的子串在另一个字符串中的位置。(-1表示没有找到)

(5)localeCompare():对字符串值进行排序,参数是要进行比较的字符串;

(6)slice():第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置,省略的话就默认为字符串的长度。

    substring():同上;

PS:当两者参数为负数时有些不同;slice()会用字符串长度加参数,substring将其作为0处理(忽略);

(7)toLowerCase():字符串转换为全小写;

    toUpperCase():转化成全大写;

5、instanceof运算符

 xxx instanceof Object(Object/Array/Date/Function);

六、运算符

1、delete:删除对以前定义的对象属性或方法的引用

1 var o =new Object();
2 o.name = "coco";
3 console.log(o.name);//coco
4 delete o.name;
5 console.log(o.name);//undefined

PS:不能删除开发者未定义的属性和方法,如原始的ECMAScript方法。

2、void:对任何值都返回undefined,通常用于避免输出不应该输出的值。

<a href="javascript:void(window.open('about:blank'))">click</a>

3、(1)前增量运算符:(++num,--num)

 先加减后运算;

(2)后增量运算符:(num++,num--)

先运算后加减;

4、一元运算符

5、位运算符

(1)位运算NOT(~)

(2)位运算AND(&)

(3)位运算OR(|)

(4)位运算XOR(^)

(5)左移运算(<<)

(6)有符号右移运算(>>)

(7)无符号右移运算(>>>)

6、Boolean运算符

(1)逻辑NOT(!)

PS:两个!!给出变量真正的boolean值;

(2)逻辑AND(&&)

PS:如果第一个运算数是false,则不再计算第二个运算数,结果为false。

(3)逻辑OR(||)

PS:如果第一个运算数是true,则不再计算第二个运算数,结果为true。

7、乘性运算符

(1)乘法运算符(*)

(2)除法运算符(/)

(3)取模运算符(%)

8、加性运算符

(1)加法运算符(+)

(2)减法运算符(-)

 9、关系运算符

10、等性运算符

(1)等号(==)和非等号(!=)

如果一个运算数是Boolean值,在检查相等性之前,将它转换成数字值;false->0;true->1;

如果一个运算数是字符串,另一个是数字,在检查相等性之前,尝试将字符串转换成数字;

null与undefined相等;

不能将null和undefined转换成其他值;

(2)全等号(===)和非全等号(!==)

只有在无需类型转换运算数就相等的情况下才返回true;

11、条件运算符(三元)

12、赋值运算符(=、+=、-=、*=、/=、%=、>>=、<<=)

七、语句

1、if语句

2、迭代语句

(1)do-while语句:计算表达式之前至少会执行循环主体一次;

(2)while语句

(3)for语句

(4)for-in语句:遍历对象的可枚举属性;

(5)break语句:立即退出循环;

    continue语句:退出当前循环,进行下一次循环;

(6)with语句

(7)switch语句

八、函数

1、无重载

2、arguments

length属性

3、Function类

 4、闭包

原文地址:https://www.cnblogs.com/nerrol/p/8289120.html