码迷,mamicode.com
首页 > 其他好文 > 详细

初学杂烩——第三章

时间:2015-11-04 21:17:51      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

数据类型:原始类型|对象类型 概念:能够表示并操作的值的类型称之为数据类型;变量是一个值得符号名称;

原始类型

  数字,字符串,布尔值,null(空),undefined(未定义)

对象类型真值

  对象(属性的集合)->特殊对象:全局对象,数组类,函数类,日期类,正则类,错误类  /*类相当于对象类型的子类型*/

           ->普通对象:"命名值"的无序集合

原始值和对象之间的区别

  1.原始值是不可更改的;对象的属性,方法都是可更改的。

  2.原始值的比较是值得比较;对象的比较并非值得比较,换句话说,哪怕是两个一模一样的人,他们也只能称之为双胞胎,而不是一个人。

内存管理:js解释器有自己的内存管理机制,所以不用考虑内存的回收问题。

面向对象:数据类型本身可以定义方法来使用值。如:数组a对其元素进行排序,只需:a.sort()即可。/*原始类型除null和undefined都是有方法的值*/

变量:无类型,可以被赋予任何类型,也可以重新被赋予任何类型。关键字 var

作用域:全局和局部变量

数字:js所有数字均用浮点数值表示(64位浮点格式);数组索引是基于32位整数

  数字直接量:当一个数字直接出现在js程序中时,我们称之为数字直接量,对应的有整型直接量以及浮点型直接量

    整型直接量:十进制整数(0~10),十六进制值(以"0x"或"0X"为前缀,如0xff),八进制部分支持(以"0"为前缀),但是不建议使用

    浮点型直接量:3.14, .333, 6.02e23, 1.47E-32

Math:

  Math.sqrt()

  Math.pow(x,y);x的y次幂,如果y是1/3 则变成了x的立方根

  Math.round(x);x的四舍五入(对浮点型)

  Math.ceil(x);向上求整(大于等于)

  Math.floor(x);向下求整(小于等于)

  Math.abs(x);x的绝对值

  Math.max(a,b,c);返回最大值,对应min返回最小值

  Math.random();生成一个大于等于0小于1.0的伪随机数。/*非常常用的一个函数*/

  Math.PI;圆周率

  Math.E;自然对数的底数

  Math.sin(0),另外还有cos,atan等三角函数

  Math.log(10);10 的自然对数

  Math.log(100)/Math.LN10;以10为底100的对数

  Math.log(512)/Math.LN2;以2为底521的对数

  Math.exp(3);e的三次幂

算术运算错误

  溢出:Infinity(无穷大),-Infinity(无穷小)

  下溢:当运算结果无限接近于零并比Javascript能表示的最小值还小的时候发生的一种情形。"零"或者"负零" /*负零和正零值是相等的,只有在做为除数时不一样。*/

  被除零:Infinity(无穷大),-Infinity(无穷小),0/0返回NaN(not-a-number) /*这里的NaN甚至和自己都不相等,所以isNaN()里面是通过x!=x来判断的*/

 二进制浮点数和四舍五入错误

  实数有无数个,但是js通过浮点数的形式只能表示其中有限个数(18437736874454810627个),所以很多时候仅仅是一个近似值。

  采用了IEEE-754浮点数表示法(一种二进制表示法,可以精确地表示1/2,1/8,1/1024等),这导致类似0.1这样的简单数字都不能精确表示……(如.3-.2与.2-.1不相等)

  /*真实运行环境:0.3-0.2=0.09999999999999998*/

文本:通过字符串类型来表示,而字符串由一组16位值组成的不可变的有序序列。

  字符串:长度是16位值的个数。/*没有所谓的字符型*/

  字符串所有的操作方法都是作用于16位值,而非字符,且不会对代理项对做单独处理,也不会做标准化加工,甚至不能保证字符串是合法的UTF-16格式。

  字符串直接量:单引号与双引号之间可以相互包含。

ECMAScript3中,字符串直接量必须写在一行。

ECMAScript5中,字符串直接量拆开写每行需用反斜线“\”结束。

转移字符:以"\"加上一个字符就会发生化学反应……

  \n:换行符

  \o:NUL字符

  \b:退格符

  \t:水平制表符

  \v:垂直制表符

  \f:换页符

  \r:回车符

  \‘:单引号;\":双引号;\\:反斜线;

  有两个特殊的转义字符是通用的:

    \xXX:通过16进制数表示Latin-1或Unicode中的任意字码。/*例如\xA9表示版权符号*/

    \uXXXX:由4个十六进制数指定任意的Unicode字符。/*例如\u03c0表示字符π*/

J s的内置功能

  1.字符串之间用"+"可以连接

字符串的方法

  str.charAt(index):获取str对应下标为index的字符

  str.substring(start,length):获取str从下标start开始,长度为length的子字符串。/*与slice方法相同*/

  str.slice(-3):获取最后三个字符。/*只有一个参数的情况*/

  str.indexOf("l"):字符"l"首次出现的位置,对应的有str.lastIndexOf("l"),以及s.indexOf("l",3);从位置3开始(包括位置3),首次出现字符"l"的位置。

  str.split(","):分割成若干子串,即字符串数组。

  str.replace("h","H"):将str中所有的"h"替换成"H"。

  str.toUpperCase():全部大写,对应的有toLowerCase();

  记住,在Js中字符串是固定不变的,类似replace()以及toUpperCase()的方法都是返回新字符串,原字符串本身并没有发生变化

  /*在ECMAScript5成型之间,绝大部分的浏览器已经支持str[index]的访问形式。*/

模式匹配

Js定义了RegExp()构造函数,用来创建表示文本匹配模式的对象。这种模式称为"正则表达式",采用的是Perl中的正则表达式语法。

String和RegExp对象均定义了利用正则表达式进行模式匹配和查找与替换的函数。

RegExp:是一种强大和常用的文本处理工具。

  1.并不是JavaScript的基本类型,和Date一样,只是一种具有实用API的特殊对象。/*API很丰富*/

  2.但是依然具有直接量写法。/*两条斜线之间的文本构成一个正则表达式直接量*/

RegExp的语法规则

  /^HTML/  匹配以HTML开始的字符串

  /[1-9][0-9]*/  匹配一个非零数字,后面是任意个数字

  /\bjavascript\b/i  匹配单词"javascript",忽略大小写

RegExp的方法

  pattern.test(str);返回布尔值,是否匹配成功

  str.search(pattern);返回首次匹配成功的位置。如果匹配不到,返回-1

  str.match(pattern);所有匹配组成的数组

  str.replace(pattern,"#");将匹配到的都替换成"#"

  str.split(/\D+/);用非数字字符截取字符串。/*例如:"a1,2,3"=>["","1","2","3"]*/

布尔值:任何JavaScript的值都可以转换为布尔值。当js期望使用一个布尔值的时候,假值会被当成false,真值会被当成true

  false(假值):undefined,null,0,-0,NaN,"" //空字符串

  true(真值):其他所有值,包括所有对象(数组)

  所以直接用if(o)来判断对象o是不是假值。/*这里有一个操作符可以学习:!==,不等操作符,*/

  API:toString(),转换成对应的字符串,"true","false"

布尔运算符

  &&:与(AND)操作

  ||:或(OR)操作

  !:非(NOT)操作,一元操作符

null:特殊值,用来描述"空值",执行typeof运算返回字符串"object",可见是一个特殊的对象值,含义是"非对象"。

  通常认为null是它自有类型的唯一一个成员,表示数字、字符串和对象是"无值"的。

undefined:更深层次地明确是"未定义"。也表示"值得空缺"。与null在"=="是相等的,但是在"==="是不等的。

/*null和undefined没有任何属性和方法,所以使用"."或者"[]"会报类型错误:TypeError*/

 

/*undefined,系统级的,出乎意料的或类似错误的值的空缺;null,程序级的,正常的或意料之中的值的空缺--->赋值给变量或者属性,用于参数传入函数*/

全局对象:在JavaScript解释器启动时会创建一个新的全局对象,并给它一组定义的初始属性:

  .全局属性,比如undefined,Infinity和NaN

  .全局函数,比如isNaN()、parseInt()和eval()

  .构造函数,比如Date()、RegExp()、String()、Object()和Array()

  .全局对象,比如Math和JSON

  /*这些初始属性并不是保留字,但是应该作为保留字来对待。*/

  在代码的最顶级,使用this关键字可以引用全局对象:var global=this;

  在客户端JavaScript中,Window对象充当了全局对象,其中的window就相当于前文讲到的this来引用全局对象,

    除此之外,它针对Web浏览器和客户端JavaScript定义了一少部分其他全局属性。

PS:如果代码声明了一个全局变量,那么这个全局变量就是全局对象的一个属性。

包装对象

  js对象是一种复合值(它是属性或已命名值的集合)

  通过"."符号来引用属性值,如果该属性值是一个函数时,称其为方法,调用时需加上"()"。

  1.var s="hello world";这里的s是字符串直接量,本身不是对象,没有任何的属性和方法。

  2.但是当引用s.substring(0,2)等字符串的属性的时候,就会通过调用new String(s)的方法转换成对象。

  3.当属性引用完毕后,便会销毁这个对象。---这里的临时对象就是被称作包装对象

  同理数字和布尔值也是如此,一个是通过Number(),一个是Boolean()

初学杂烩——第三章

标签:

原文地址:http://www.cnblogs.com/luchaohai/p/4933311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!