码迷,mamicode.com
首页 > Web开发 > 详细

JS学习第五天----类型,值,和变量

时间:2015-08-07 11:12:23      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:javascript

类型,,和变量

前言:计算机程序的运行需要对值(value)比如数字3.14或文本”hello,world”进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特性就是支持多种数据类型.当程序需要将值保持起来以备将来使用时,便将其赋值给(将值”保存”到)一个变量(variable).变量是一个值的符号名称,可以通过名称获得对值的引用.变量的工作机制是变成语句的另一个基本特征.

 

前言:JavaScript的数据类型分为两类:原始类型和对象类型。5种原始类型:数字、字符串、布尔值、null(空)、undefined(未定义)。对象是属性的集合,每个属性都由“名/值对”(值可以是原始值、也可以是对象)构成。三个比较特殊的对象:全局对象、数组、函数。JavaScript语言核心还定义了三种有用的类:日期(Date)类、正则(RegExp)类、错误(Error)类。

 

 

.数字

JS中不区分整数值和浮点数值.JS可以识别十进制整型直接量(所谓直接量,就是程序中直接使用的数据值),16进制值(0x0X为前缀,那个是数字0不是字母o.动动脑子就知道,如果那是一个字母o的话,那么一个十六进制值不就成了一个标识符了吗).尽管ECMAScript标准不支持八进制直接量,JS的某些实现可以采用八进制形式表示整数(以数字0为前缀),IE,火狐,谷歌的浏览器上使用八进制给一个变量赋值没问题.但是ECMAScript6的严格模式下,八进制直接量是命令禁止的.

 

浮点型直接量有两种写法:

(1)传统的实数写法:有整数部分,小数点和小数部分组成

(2)指数计数法:即在实数后跟字母eE,后面跟正负号,其后在跟一个整型的指数.

 

 

 

算术运算的溢出

JS中算术运算在溢出,下溢或被0整除时不会报错.

 

溢出:当运算结果超出了JS所能表示的数字上限,结果为正无穷大或负无穷大.无穷大值的行为特性也符合现实:基于他们进行的加减乘除运算结果还是无穷大(当然保留他们的正负号).

下溢:当运算结果无限接近零并币JS能表示的最小值还小的时候发生的情况.这种情况下,就会返回0.当一个附属发生下溢时返回特殊值”负零”.负零和正零基本是相等的(甚至可以使用严格相当===来测试),除了作为除数之外:

案例:

 

var zero=0; //正零值

var negz=-0; //负零值

zero===negz;//表达式返回值为true

1/zero===1/negz; //表达式返回值false,等价于正无穷大和负无穷大是否严格相等

 

0整除会返回正无穷大或负无穷大值.0除以0会返回NaN(JS预定义对象NumberNaN属性的值).返回.NaN有四种情况:

(1).0除以0

(2)无穷大除以无穷大

(3)给任意负数做开方运算

(4)算术运算符鱼不是数字或无法转换为数字的操作数一起使用时.

 

 

NaN值有一个特定:它和任何值都不想等,包含自身.判断一个变量X是否为NaN的两种方法:

(1).使用函数isNaN()

(2)使用x!=x判断,当且仅当xNaN,表达式的结果才是true. JS中还有一个类似的函数IsFinite(),在参数不是NaN,Infinity-Infinity的时候返回true/

 

 

 

二进制浮点数和四舍五入

 

众所周知,实数有无数个,JS通过浮点数的形式只能表示其中有限个数.什么意思呢,就是说,JS中使用实数的时候,常常只是一个真实值的一个金斯表示.JS采用了IEEE-754浮点数表示法,这是一种二进制表示法,可以精确的表示1/2,1/81/10244等这样的分数,但是十进制分数1/10,1/100等并不能精确表示.例如:

 

var x=0.3-0.2; //x=0.99999999999998

var y=0.2-0.1; //y=0.1

x==y; //false

x==0.1; //false

y==0.1; //true

0.1==0.1; //true

var z=x+y; //z=0.199999999998

到底是个什么JB意思我愣是没看明白.反正不常用.

 

 

 

.文本

 

 

字符串,字符集

字符串时一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集.字符串的长度使其所含16位值的个数.JS通过字符串类型来表示文本.注意:JS中并没有表示单个字符的”字符型”.要表示一个16位值,只需要将其赋值给字符串变量即可.

 

JS采用UTF-8编码的Unicode字符集,JS字符串时由一组无符号的16位值组成的序列.那些不能表示为16Unicode字符则遵循UTF-16编码规则用两个16位组成一个序列(或称为”代理项对”)表示.这意味着一个长度为2JS字符串有可能表示一个Unicode.注意:JS定义的各式字符串的操作方法均作用域16位值,而非字符,且不会对代理项对做单独处理.

 

 

字符串的定界符可以是单引号或者双引号.这两种形式的定界符可以嵌套,但是不能多层嵌套(比如,双引号可以包含单引号,这时单引号中不能再包含双引号了).一个字符串可以拆分成数行,每行必须以反斜线(\)结束,这时反斜线和行结束符都不算是字符串内容,即字符串本身并非是多行,只是写成了多行的形式.

 

注意:

(1).JS中字符串是固定不变的(除非重新赋值),类似replacetoUpperCase()方法都返回新字符串,元字符串本身没有什么变化

(2)字符串可以当做只读数组,除了施工charAt()方法来查询一个单个字符,也可以使用方括号的方式来访问字符串中的单个字符(16位值).例如:

s=”hello,world”;

s[0]; //=>”h”

 

 

 

转义字符

转义字符

含义

\o

NUL字符

\b

退格

\t

水平制表符

\n

换行符

\v

垂直制表符

\f

换页符

\r

回车符

\”

双引号

\’

单引号或撇号

\\

反斜线

\xXX

由两位十六进制数XX指定的Latin-1字符

-uXXXX

4位十六进制数XXXX指定的Unicode字符

 

注意:如果”\”字符位于没有在表中列出的字符前,则忽略”\”.比如”\#”和”#”等价.别忘了反斜线还有一个作用,就是多行字符串中每行结束处使用反斜线.

 

 

 

三.布尔值

JS中的值都可以转换为布尔值.其中,null,undefined,0,-0,NaN,,””(空字符串),这六个值会被转换为false,false和这六个值有时称作”假值”;其他所有值,包括对象(数组)都会转换为true.true和这些值相应的被称为”真值”.注意:布尔值包含toString()方法,因此可以使用这个方法将字符创换成”true”或”false”,但它并不包含其他有用的方法.

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

JS学习第五天----类型,值,和变量

标签:javascript

原文地址:http://blog.csdn.net/shanyongxu/article/details/47335233

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