JavaScript进阶入门(二)

转换为数字

使用parseInt()

parseInt函数会先查看位置0处的字符,如果该位置不是有效数字,则将返回NaN,如果0处的字符是数字,则将查看位置1处的字符,并进行同样的测试,以此类推在整个验证过程中,直到发现非数字字符为止,此时paresInt()函数将前面分析合法的数字字符转化为数值,并返回。

alert(parseInt("123abc"));//返回数字123
alert(parseInt("1.73"));//返回数字1
alert(parseInt(".123"));//返回值NaN

浮点数中的点号对于parseInt()函数来说属于非法字符,因此不会装换它,并返回。

使用parseFloat函数

parseFloat函数与parseInt函数用法基本相同,但是它能够识别第一个出现的小数点号,而第二个小数点号则被视为非法的。

alert(parseFloat("1.234.11"));//返回数值1.234

使用乘号运算符

加号运算符不仅能够执行数值求和运算,还可以吧字符串连接来。由于JavaScript处理字符串连接操作的优先级要高于数字求和运算。因此,当数字字符串与数值使用加号连接时,将优先执行连接操作,而不是求和运算。

由此可以看出,使用*号可以利用JavaScript的自动转换完成这个目标。

var a=1;
var b="1";
alert(a+(b*1));

转换为布尔值

任何值如果在前面加上一个逻辑非运算符,JavaScript都会把这个表达式看作是逻辑运算,执行运算时,先把值转换为布尔值,然后再执行逻辑非运算。

var a=!0;//true
var b=!1;//false
var c=!NaN;//true
var d=!null;//true
var e=!undefined;//true
var f=![];//false
var g=!{};//false

使用Boolean()构造函数转换

var a=0;
var b=1;
a=new Boolean(a);//false
b=new Boolean(b);//true

把对象转化为值

对象在逻辑运算环境中的转换

对象在逻辑运算环境中,则对象被转换为true。这包括所有类型的对象,即使是值为false的包装对象也为true、

var a=new Boolean(false);
var b=new Number(0);
var c=new String("");
a && alert(a);//a转换为布尔值true,但是她提示的字符串转换至为false
b && alert(b);//b转换为布尔值true,但是她提示的字符串转换至为"0"
c && alert(c);//c转换为布尔值true,但是她提示的字符串转换至为""

数组在数值运算环境中的转换

当数组被用在数值运算环境中是,数组将根据包含的元素来决定转换的值。

1)如果是空数组,则被转为数值0.当数组为空的时候,JavaScript将调用toString()方法把数组换位空字符串,然后经空字符串强制转换为0.

2)如果数组仅包含一个数字元素,则被转换为该数字的数值。

var a=[5];
a=a*1;//投放到数值运算环境中
alert(a);//返回数值5
alert(typeof a);//返回数值类型numbmer

3)如果数组包含多个元素,或仅包含一个非数字元素,则返回NaN

对象在模糊环境

1)当对象与数值进行加号运算是,则会尝试把对象转化为数值,然后参与求和运算,如果不能够转化为有效数值,则执行字符串连接操作。

var a=new String("a");
var b=new Boolean(true);
a=a+0;
b=b+0;
alert(a);//返回字符串"a0"
alert(b);//返回数值1

2)当对象与字符串进行加号运算时,则直接转化为字符串,进行连接操作

3)当对象与数值进行比较运算时,则会尝试吧对象转换为数值。

运算符

优先级

优先级:表示运算符参与的先后顺序,顺序越大,运算优先级就越高。

15

.(点号)

[]中括号

()小括号

new

14

++(连加)

--(连减)

+(加号)从右到左

*(乘法运算)


NaN

NAN和其他的任何值相加都是NaN

减法运算中如果有一个运算数不是数字则返回NaN,如果数字为字符串,则会把它转换为数值之后在进行运算。

逻辑运算符

逻辑与运算符&&的逻辑解析:

首先,计算第一个运算数,即左侧表达式,如果左侧的表达式的计算值可以被转换为false,那么就会结束计算,直接返回第一个运算数的值。

由于这种特性,在程序中也会利用它设计简易运算

(n==1) && alert(1);

逻辑或运算符||的逻辑解析:

计算第1个运算数。如果左侧的表达式的计算值可以被转换为true,那么就直接返回第一个运算数的值,忽略第2个运算数(既不执行)。

&&的优先级高于||

逻辑非运算符!是一元运算符,直接放在运算数之前,将对运算数执行布尔取反操作,并返回布尔值

等值检测

==(相等) 比较两个运算数的返回值,看是否相等

!=(不相等) 比较两个运算数的返回值,看是否不相等

===(全等) 比较两个运算数的返回值,看是否相等,同时检测他们的数据类型是否相等

!==(不全等) 比较两个运算数的返回值,看是否不相等,同时检测它们的数据类型是否不相等。

相等运算的比较规则

如果运算数是布尔值,在比较之前转化为数值。

如果一个运算数是字符串,另一个运算数是数字,在比较之前先尝试把字符串转化为数字。

如果一个运算数是数字,另一个运算数是对象,在比较前先将对象转化为数字。

如果一个运算数是字符串,另一个运算数的对象,在比较之前先尝试把对象转换为字符串。

如果两个运算数都是对象,那么比较他们的引用值。

对象操作运算符

new 运算符可以根据构造函数创建一个新的对象,并初始化这个对象

new constructor(arguments)

constructor必须是一个构造函数表达式,其后面应该是利用小括号包含的参数列表,参数可有可无,参数之间通过逗号进行分割。

var a=new Array();
var a=new Array(1,2,3);

new运算符被执行的时候,首先会创建一个新对象接着new运算符调用指定的构造函数,这里是Array数组的构造函数。

以下代码可以自定义类,并使用它创建新的对象

var a=function(){
this.x=1;
this.y=2;
};
var b=new a; //创建自定义类a的对象实例
alert(b.x); //返回1,调用对象的成员

对于自定义类,只能通过new运算来进行实例化

(这个没必要太懂,就是知道JavaScript的类实际上是一个函数,调用这个函数,就自动造成了对象。之后会讲)

delete运算符

delete运算符能够删除指定对象的属性,数组元素或变量

var a={
x:1;
y:2;
};
alert(a.x);//返回1,调用对象成员
delete a.x;//删除对象成员x
alert(a.x);//返回undefined,没有找到该对象成员

不是所有的对象成员或变量都可以被删除,某些内置对象的预定义和客户端对象成员,以及使用var语句生命的变量都是不允许删除的。

如果删除不存在的对象成员,或者非对象成员,数组元素,变量时,他会返回true,所以使用delete运算时,应该注意这个问题,防止和成功删除发生混淆。

var a={
x:1;
y:2;
};
alert(delete a); //返回false,说明不允许删除
alert(delete a.z)//返回true,说明不存在该属性
alert(delete Object)//返回true,说明删除的不是成员,元素或变量
alert(delete b)//返回true,说明不存在该变量。

中括号和点括号运算符

中括号和点号都属于存取运算符,用于访问对象后数组。使用中括号运算符([])可以存取数组元素值。

例子:

var a={
x:1;
y:function(){
return 2;
}
};
alert(a["x"]);//返回1,读取属性x的值。

点号运算符(.)可以存取对象的属性值,它比中括号灵活方便,因为点号运算符右侧可以直接指定属性的标识符,而不是属性名称的字符串或变量。

对于中括号预算福可以通过变量或字符串表达式来传递特定值

var b="x";
var a={
x:1;
};
alert(a[b]);
alert(a.b);

在中括号中的字符串形状的数字会被转化成数字来进行运算。

var a=["x",true,{}];
alert(a[1]);
alert(a["1"]);

小括号运算符

小括号是一个特殊的运算符,他没有固定数目的运算数。其中第一个运算数必须是一个函数名或者引用函数的表达式。

f(a,b,c);

function a(){
alert("Hello world");
}
a;
a();
a(1,"string",{},true);

小括号运算符在执行的时候是这样的,先对没个运算数进行计算,然后调用第一个运算数所指的函数,同时把余下的运算数传递给函数作为它的参数。

其他运算符

条件运算符

条件运算符是JavaScript唯一的三元运算符,语法形式如下:

a?x:y

a运算数必须是一个布尔值的表达式,即返回值必须是一个布尔值,一般使用比较表达式来表示。x和y是任意类型的值。如果运算数a返回值为true时,将执行x运算,并返回该表达式的值。如果运算数a返回值false时,将执行y运算数,并返回该表达式的值。

逗号运算符

逗号运算符是一个二元运算符,他能够执行运算符左侧的运算数,然后在执行右侧的运算数,最后仅把右侧运算数的值作为结果返回。

可以用来连续声明多个变量并赋值

var a=1,b=2,c=3,d=4;
//等于
var a=1;
var b=2;
var c=3;
var d=4;

最新文章

  1. JAVA匿名内部类
  2. FPS
  3. JAVA 静态代码块
  4. JDBC常用代码
  5. ASP判断文件地址是否有效
  6. 三维CAD塑造——基于所述基本数据结构一半欧拉操作模型
  7. 为什么EXE文件出现了不该出现的“盾牌”
  8. 【甘道夫】官方网站MapReduce代码注释具体实例
  9. java设计模式面试
  10. python制作爬虫爬取京东商品评论教程
  11. zip 安装mysql 和遇到的坑
  12. asyncio协议
  13. Windows Server 2012系统上安装.net framework3.5教程
  14. 加载配置文件-properties
  15. 一、Java多人博客系统-开篇
  16. gitlab提交代码
  17. 项目Alpha冲刺(团队3/10)
  18. JAVA实现用户的权限管理
  19. MT【6】等比数列和的极限
  20. Jmeter测试报告

热门文章

  1. kafka spark steam 写入elasticsearch的部分问题
  2. python后端面试第八部分:制作简历和如何面试--长期维护
  3. centos 中文乱码解决办法
  4. 3dmax2013卸载/安装失败/如何彻底卸载清除干净3dmax2013注册表和文件的方法
  5. SQL语句简单应用(未完)
  6. python3下scrapy爬虫(第六卷:利用cookie模拟登陆抓取个人中心页面)
  7. windows下面 apache 虚拟主机配置
  8. C# Dictionary字典类介绍
  9. Activiti 5.16 用户手册
  10. Spring Cloud Alibaba-MyShop-项目介绍