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;

JavaScript入门进阶(二)的更多相关文章

  1. javascript入门进阶(一)

    javascript 入门进阶 这里主要讲解一下在入门阶段很难注意的一些知识点,不一定有用.但是会了总比不会强. 1.HTML为<script>标签准备的6个属性: -async:可选.表 ...

  2. JavaScript 入门教程二 在HTML中使用 JavaScript

    一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...

  3. JavaScript入门介绍(二)

    JavaScript入门介绍 [函数] 函数function 是Javascript的基础模块单元,用于代码的复用.信息影藏和组合调用. function a(){} 函数对象Function Lit ...

  4. 2016.8.25 JavaScript入门之二

    1.字符串中,引用字符串:要用/"转换: 例如:var myStr="I am a \"double quoted\" string inside \" ...

  5. JavaScript入门(二)

    一.JS中的运算符 1.算术运算(单目运算符) + 加.-减.*乘. /除. %取余.++自增运算符 .--自减运算符; >>>+:有两种作用,链接字符串/加法运算符.当+两边全为数 ...

  6. JavaScript入门-函数function(二)

    JavaScript入门-函数function(二) 递归函数 什么是递归函数? 递归简单理解就是,在函数体里,调用自己. //我们在求一个10的阶乘的时候,可能会这么做 //写一个循环 var to ...

  7. JavaScript入门(二)

    JavaScript入门—操作DOM树 要点 DOM树是一个树形结构,操作DOM树通常是“更新.遍历.新增.删除”. 更新DOM树 拿到DOM节点 var id=document.getElement ...

  8. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  9. 慕课网JavaScript入门篇课程笔记

    1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...

随机推荐

  1. 网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第二卷)

    接着上卷来分析,作为开发人员我们都知道,登录是一个想指定URL发送POST请求的过程,所以我们需要找到请求的URL,以及字段,先用一个错误账号和密码做一下尝试,如果是正确的话会直接跳转到别的页面,这样 ...

  2. django-crontab使用

    用 django-crontab 为 Django 添加定时任务 需求 做后台开发的时候,有时候会遇到这样的需求,在某个固定时间或者一定时间间隔自动触发某一事件.比如说我有一个需求要求是,周一到周五早 ...

  3. CentOS-TFTP服务搭建

    title date tags layout CentOS6.5 TFTP搭建 2018-08-26 Centos6.5服务器搭建 post 1.安装TFTP服务 yum install tftp-s ...

  4. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...

  5. 77)PHP,将session数据写到不用的存储介质中

    首先我的siession数据可以写到:文件中    session数据区  或者数据库中, 那么怎么将文件中的session数据或者session数据区的数据写到  数据库中,,又或者任意挑选两个不同 ...

  6. HTTP请求方法及响应码详解(http get post head)

      HTTP是Web协议集中的重要协议,它是从客户机/服务器模型发展起来的.客户机/服务器是运行一对相互通信的程序,客户与服务器连接时,首先,向服务 器提出请求,服务器根据客户的请求,完成处理并给出响 ...

  7. 有空要解决的错误log

    E/FaceSDK (): FACESDKTimer face score =0.999912 I/FaceTracker(): face_verification used: I/DEBUG ( ) ...

  8. iOS应用程序开发——解决iOS7之前版本与之后版本下app启动图片跳动问题

    之前开发的app都是针对iOS6(兼容iOS5),所以在开发之初也出现了启动图片向下跳动的现象,通过网上的解决方法,代码中做了处理(“-20”): _imageView.frame = CGRectM ...

  9. 关于php自学

    自己本人现在正在自学php有一段时间了,不知道现在的学习状态咋样,在我看来应该属于不算很糟糕,但有点糟糕的状态. 如果算学习自学php的话,现在断断续续应该是有5个月了,按理说是差不多可以做出独立项目 ...

  10. bubble chart|Matrix Scatter|Overlay Scatter|Scatterplots|drop-line|box plot|Stem-and-leaf plot|Histogram|Bar chart|Pareto chart|Pie chart|doughnut chart|

    应用统计学 对类别数据要分类处理: Bar chart复式条形图便于对比: Pareto chart:对类别变量依据频数高低排列: Pie chart:饼图用于一个样本,可以区分类别数据 doughn ...