JavaScript高级程序编程(三)
2017-06-24 更新 北京连续三天下雨啦
乘性操作符
1.ECMA中定义了三种操作符,乘法 除法 和求模 并与其他语言相应操作符相同,再计算之前如果不是数值,会先去调用number()方法转换,空字符转换为0 true转换为1
2.凡是与NaN计算的结果都为NaN,计算结果超过数值范围会显示Infinity或者-infinity 无穷数与0相乘结果为NaN 非0相乘结果为 正无穷或者是负无穷
3.NaN属于特殊数值alert(NaN==NaN)//false ECMA还特意定义了一个函数来判断,isNaN 函数 注意:这个函数返回true或者是false 但是进入函数得数值都会先被调用valueof()方法判断是否可以转换为NaN然后返回 true或者false
4.数值转换(Number()方法为例)
① 按照惯例,如果是Boolean 类型转换为 1 或者 0 ,数字只是简单得返回并无转换
② 若是Null值 则返回 0 ,而undefined 返回NaN
③ 若是字符串则有以下几种 :1. 字符串数字返回 数字类型 但是会忽略前导0 比如 011 转换为11 ,小数会返回有效得浮点格式 如1.1等同样忽略前导0 2.如果字符串包含有效16进制格式 则返回大小相同得十进制数值 如果是空字符 则返回 0 如果字符串除上述格式之外则返回NaN ,也就是说纯字符串且非数字字符串会返回NaN
④ 如果是对象 则调用valueOf() 方法然后按照上面规则返回数值, 如果转换结果是NaN 则调用tostring方法 按照前面规则再次返回
5.parseInt()按照上述规则总体相同但是也有部分区别 例如转换“123blue” 结果会是123 ,而空字符返回结果会是NaN “0xf”会被转换为16进制数值15 ,这里有个坑需要点名一下例如“070”在ECMA3规则中呗转换成 56 而在ECMA5得时候这个BUG被修复 为十进制 70 (实际上这个并非BUG)而是在ECMA5得时候parseInt方法被扩展 可以接收两个参数除了必须参数之外还包含了可选得进制数值 如 :parseInt(“AF”,16)//175 如果不写转换进制 则返回NaN
6.parseFloat()秉承parseInt函数特性,当遇到整数时返回整数遇到多位小数点例如 22.22.34 会找到第一个小数点忽略后面数值返回22.22 当然遇到前导0得时候一样会忽略前导0
7.String 类型标识由0或者多个Unicode组成得字符序列 该字符串可以由双引号与单引号表示,双引号与单引号并不明显区别!但是一定要成对出现,有关字符串转义序列这里就不多说啦,详情见 33页,这里需要说明一下字符串得特点,当字符串声明之后再次进行操作得时候原字符串就会被销毁,例如 var s=“222”; s+=s+“t”;这里得s已经被重新填充而并非在原有基础伤修改,这里不同于C#中字符串定义,哪里定义变量后该变量指向堆中得值而实际上 变量中只存了该数值在堆中得索引并非实际值,原有变量被操作之后该变量指向另外得索引而原值并未改变,当然这里会牵扯到回收机制,稍后介绍。
8. toString() 该方法几乎每个值都有这个方法,除了null 和 undefined,该方法介于值如果有这个方法就调用该值得tostring方法如果没有就返回相应结果,例如结果为null 则返回“null”
9.object 类型 在ECMA中这种类型属于数据与功能得集合,可以使用new操作符来创建新对象类型 ,object类型时所有它实例得基础 换句话说object类型所具有得任何属性方法页同样存在与他的每一个具体对象中,下面是几种基础得属性和方法:
① constructor 保存用于创建对象得函数
② hasOwnProperty(propertyName)用于检查给定属性在当前对象实例中是否存在,注意这里说得是否存在并不是实例原型中,例如 s.hasOwnProperty("name") ,指的是变量s中是否存在name属性,注意这里指的是属性!
③ isPrototypeOf(object) 用于检查传入对象是否是当前对象得原型
④ propertyIsEnumerable(propertyName)用于检查给定得属性是否能使用for-in语句来枚举,与hasOwnporperty()方法一样参数属性名必须是字符串
⑤ tolocalestring() 返回字符串与执行环境地区相对应,稍后会有详细介绍
⑥ tostring() 这个就不多说啦。
⑦ valueof() 返回对象得字符串,布尔或数值表示,一般与tostring()返回结果相同
在这里我是这样理解object类型得 他就像是地心引力一样得存在,他是所有对象得基础是他让一切成为了可能,所以所有对象都具有这些基本属性和方法
JavaScript高级程序编程(三)的更多相关文章
- JavaScript高级程序编程(一)
第一章 JavaScript简史 20170510 JavaScript 组成部分: 核心(ECMAScript) 文档对象模型(DOM)浏览器对象模型(BOM) Netscape Navigat ...
- JavaScript高级程序编程(二)
JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...
- JavaScript高级程序编程(四)
2017.7.12 北京 数伏第一天 本日总结: 1.线上服务器时常显示.woff文件丢失解决办法 (IIS服务器) 添加MIME类型 添加三条: 文件扩展名 MIME类型 .svg ...
- JavaScript高级程序设计第三版.CHM【带实例】
从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...
- javascript高级程序设计第三版书摘
在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- 22.1 高级函数【JavaScript高级程序设计第三版】
函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...
- JavaScript高级程序开发3笔记
Js对象 注意:js基本数据类型不是对象,但是"abc".match()这种,可以调用对象的方法,是因为调用方法是临时产生了一个wrapper的包装对象,this指向它: Js ...
- JavaScript高级程序设计 第三章 基本概念
ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...
随机推荐
- java之hibernate之 cascade和inverse
1.Cascade是级联动作,在many_to_one中如果使用cascade可以级联操作关联对象,如下代码可以级联保存Category对象. 在Book的映射文件设置 <many-to-one ...
- selenium中元素操作之简单的鼠标、键盘操作(三)
1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用 ...
- MySQL数据库基本规范整理
此篇文章是学习MySQL技术整理的,不足之处还望指教,不胜感激. 数据库基本规范涉及数据库命名规范.数据库索引设计规范.数据库基本设计规范.数据库字段设计规范.数据库SQL开发规范.数据库操作行为规范 ...
- 服务注册发现(一) Consul 简介及 windows版本的安装与部署
Consul是一个用来实现分布式系统的服务发现与配置的开源工具.他主要由多个组成部分: 服务发现:客户端通过Consul提供服务,类似于API,MySQL,或者其他客户端可以使用Consul发现服务的 ...
- vue中keep-alive,include的指定页面缓存问题
做vue项目时,有时要在某些页面做缓存,而其它页面不要.比如:A:首页,B:获取所有订单页面,C:订单详情页面:从A(首页)进入 B(获取所有订单)时应该不缓存,B(所有订单)进入 C(订单详情)订单 ...
- Redis_初识
一.简介 Redis(Remote Dictionary Server)本质上是一个Key-Value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作吧数据库flush到硬盘上 ...
- union的使用
将多条select语句的结果,合并到一起,称为联合查询 使用union关键字 场景: 获取数据的条件,出现逻辑冲突,或者很难在一个逻辑内表示,就可以拆成多个逻辑,分别实现,最后将结果合并到一起 sel ...
- centos7.6在线yum安装docker-ce
概述: 利用阿里的mirrror的docker-ce仓库,在线安装docker-ce 部署环境: CentOS Linux release 7.6.1810 (Core) 01.添加docker-ce ...
- Yii2通过curl调用json-rpc接口
Yii2可以通过json-rpc为前端提供接口数据,通常情况睛会使用异步的形式调用接口,有时也会使用curl调用接口数据. 一.异步调用json-rpc接口 $.ajax({ type: 'POST' ...
- Telnet,SSH1,SSH2,Telnet/SSL,Rlogin,Serial,TAPI,RAW(转)
转载:https://www.cnblogs.com/yxwkf/p/4840675.html 一.Telnet 采用Telnet用来訪问远程计算机的TCP/IP协议以控制你的网络设备,相当于在离开某 ...