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

类型,值,和变量

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

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

一.数字

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

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

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

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

算术运算的溢出

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

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

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

案例:

var zero=0; //正零值

var negz=-0; //负零值

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

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

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

(1).0除以0

(2)无穷大除以无穷大

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

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

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

(1).使用函数isNaN()

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

二进制浮点数和四舍五入

众所周知,实数有无数个,但JS通过浮点数的形式只能表示其中有限个数.什么意思呢,就是说,在JS中使用实数的时候,常常只是一个真实值的一个金斯表示.JS采用了IEEE-754浮点数表示法,这是一种二进制表示法,可以精确的表示1/2,1/8和1/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位值组成的序列.那些不能表示为16的Unicode字符则遵循UTF-16编码规则用两个16位组成一个序列(或称为”代理项对”)表示.这意味着一个长度为2的JS字符串有可能表示一个Unicode.注意:JS定义的各式字符串的操作方法均作用域16位值,而非字符,且不会对代理项对做单独处理.

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

注意:

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

(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”,但它并不包含其他有用的方法.

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

时间: 2024-10-09 06:07:15

JS学习第五天----类型,值,和变量的相关文章

Ext JS学习第五天 Ext_window组件(一)

此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 –Hierarchy 层次结构 –Inherited mixins 混入的类 –Requires 该组件需要使用的类 –configs:组件的配置信息 –properties:组件的属性 –methods:组件的方法 –events:组件的事件 •window组件常用属性和方法讲解: •confi

Ext JS学习第五天 我们所熟悉的javascript(四)

此文用来记录学习笔记: •javascript之对象.面向对象 •可能对于高级语言你可能了解甚至精通OOP面向对象,那么对于javascript你又熟悉多少呢?我们一起来学习javascript面向对象,这样非常有帮助我们理解Ext的基础架构,Ext本身就是一个JS面向对象的框架. •使用json对象(JavaScript Object Notation) –JS对象的特性 –对于js来说json对象非常的重要,我们要学会如何操作json对象 •面向对象的概念 –如何定义一个类.如何实例化对象.

Ext JS学习第五天 Ext_window组件(二)

此文用来记录学习笔记 •上一讲我们已经学过了window的使用,那么在这将中,我们将结合然后把Ext中需要注意的地方,以及组建的使用给予介绍.indow做几个Web开发的经典示例. •ExtWeb实战300例: –例1:点击按钮打开一个window,window重复创建的问题 •重点分析:这个问题是初学者经常会犯错的地方,一般来说简单的代码不会产生此问题,但是如果以后代码复杂以后,这个问题如果发生调试起来会非常麻烦!! 附上栗子代码 1 Ext.onReady(function () { 2 3

JS学习十五天----设计模式开篇

JS设计模式开篇 前言 作为小小程序员一枚,除了敲个hello,world以后啥都不会了,最近发现设计模式这个东西挺好,想搞一下,声明,本屌不是一个看见什么好,什么新潮就追什么的人,本屌还是一个比较实际的人,一般不会说什么好要什么,学设计模式完全是个人的爱好,看一看做是无聊打发时间的消遣吧. 什么是设计模式呢?既然是个模式,就说明可以套用这个模式,套用你知道是什么意思吧?一本万利明白吧?差不多就是这个意思,等你熟练掌握了所有的设计模式之后,你就可上九天揽月,可下五洋捉鳖.手握日月摘星辰,世间无我

js学习20150401(五)

一. js数据类型: 字符串:string 数字:number 布尔:boolean undefined 复合类型:object  function typeof 出现undefined的两种情况 1.定义了没有赋值 2.typeof a  根本就没有定义 3.函数没有返回值 4.访问一个不存在的属性 5.return ; instanceof var arr = new Array(); arr instanceof Array arr.constructor === Array null和u

js学习笔记4----数据类型

1.ECMAScript:标准.核心 JS中的数据类型:数字(NaN).字符串(空隔也会占据长度).布尔值(true和false).函数.对象(obj.[].{}.null).undefined. typeof 判断数据类型 2.数据类型的转换(显式类型转换或强制类型转换) a. Number()----空的字符串会解析成0,true解析成1,false解析成0, 函数.json和undefinde解析成NaN, null和空的数组解析成0; var a="100"; alert(Nu

D3.js学习(五)

上一节我们已经学习了如何设置填充区域,其实理解了他的实现原理还是非常简单了.这一节中, 我们主要学习多条曲线的绘制,以及给不同的曲线指定不同的纵坐标. 新的数据 由于我们要画两条曲线,所以我们要在原来的基础上新增一组测试数据,现在我们的数据是这样的: date close open 1-May-12 58.13 3.41 30-Apr-12 53.98 4.55 27-Apr-12 67.00 6.78 26-Apr-12 89.70 7.85 25-Apr-12 99.00 8.92 24-A

前端学习(38)~js学习(十五):原型对象

原型对象 原型的引入 function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender; //向对象中添加一个方法 this.sayName = function () { console.log("我是" + this.name); } } //创建一个Person的实例 var per = new Person("孙悟空", 18, "

node.js学习第五天--路径优化

1.path优化 path模块的基本用法 本模块包含一套用于处理和转换文件路径的工具集,用于处理目录的对象,提高用户开发效率,让我们一起来快速的认识path对象的一些常用方法吧! 2.normalize函数的基本用法 normalize函数将不符合规范的路径经过格式化转换为标准路径,解析路径中的.与..外,还能去掉多余的斜杠. 如下示例: var path = require('path'); var data = path.normalize('/path///normalize/hi/..'