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引入,定义了一种解析和执行模型.此 ...
随机推荐
- 让js中的函数只有一次有效调用
设置隐藏域~ <input type="hidden" value="1" id="flag" /> 其它三种方法
- AWS--Lamdba
分享一个Lambda相关的连接 https://blog.csdn.net/m0_37204491/article/details/72829477
- 在Windows中运行Linux bash命令的几种方法
如果你正在课程中正在学习 shell 脚本,那么需要使用 Linux 命令来练习命令和脚本. 你的学校实验室可能安装了 Linux,但是你自己没有安装了 Linux 的笔记本电脑,而是像其他人一样的 ...
- js实现输入密码之延迟星号和点击按钮显示或隐藏
缘由 手机打开segmentfalut时,长时间不登陆了,提示要重新登陆,输入的过程中看到输入密码时,延迟后再变成密文,很好奇,所以捣鼓了一下.本文实现了两种密码展示 代码实现 1 先明后密 js实现 ...
- Matlab策略模式
策略模式的意图是定义一系列算法,把它们一个一个封装起来,并且使它们可以互相替换.通常每个策略算法不可抽象再分.本人仿照https://www.runoob.com/design-pattern/str ...
- python day 15: IO多路复用,socketserver源码培析,
目录 python day 15 1. IO多路复用 2. socketserver源码分析 python day 15 2019/10/20 学习资料来自老男孩教育 1. IO多路复用 ''' I/ ...
- Docker 基础篇 入门篇
1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...
- Java 递归方法
递归:在一个方法体内,调用自身,一般要有出口. 实例:已知一个数列,f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),其中n为大于等于0的整数,求f(10)的值. package ...
- idea之将Maven的jar包安装到本地仓库
1.问题概要 很多时候,我们需要应用第三方的jar包,但是这个jar包,在maven远程仓库里面没有, 比如我们要使用京东的sdk,但这个sdk在maven的远程仓库中没有,于是我们需要将这个jar包 ...
- httpclient工具类,post请求发送json字符串参数,中文乱码处理
在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...