[第三章] 基本概念

标识符:字母,下划线,美元符号,数字。变量名的第一个字符不可以是数字。

严格模式:ECMAScript 5引入了严格模式的概念。在严格模式下,ECMAScript 3中的一些不确定的行为将得到处理,而且对于某些不安全的操作也会抛出错误。

在脚本中启用严格模式,可以在脚本顶部添加代码。"use strict"

也可以在函数内部的上方包含这条指示,指定函数在严格模式下执行。

支持严格模式的浏览器包括IE10+,FireFox4+,Safari 5.1+,Opera12+和Chrome。

变量:

松散类型。也就是说var仅仅是一个占位符,我的理解是变量保存的永远是地址值,因此var一个变量以后,可以先后存入不同类型的数据。如果var一个变量后,没有对它赋值,那么这个变量会存储undefined值。

另外,在函数中,使用var声明一个变量,这个变量就是局部变量。而如果省略var操作符,这个变量就是全局变量。但是不推荐省略var操作符。因为在局部作用域中定义的全局变量很难维护。因此在严格模式下,给未经声明的变量赋值会抛出ReferenceError错误。

数据类型:

五种基本数据类型:Undefined       Null        Boolean       Number       String

一种复杂数据类型:Object

typeof操作符

用于检测变量类型

可能返回的字符串:undefined(变量未定义),boolean,number,string,object(对象或null),function

typeof是一个操作符,因此可以直接typeof 变量名,后面的圆括号不是必需的。

undefined类型

引入这个值的目的是为了区分空对象指针和未经初始化的变量。

对于尚未声明的变量,只能有一种操作,就是typeof,会返回"undefined"值。(在严格模式下delete会报错)

对于声明了但未初始化的变量,里面存储的就是undefined值,可以有alert,==等操作。

null类型

空对象指针

typeof检测null时会返回object

如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null而不是其他值。这样就可以直接检测null来判断它是否已经保存了一个对象的引用。

if(car!=null){

          对car对象执行某些操作

}

实际上undefined是派生自null值,所以undefined==null返回true。

boolean类型

true和false(区分大小写)

其他数据类型转换为对应的boolean类型时,可调用转性函数Boolean()。如果不使用这个函数,会显示一个警告框,变量会进行自动转换。

会转换成false的一些情况:

string       ""

Number     0和NaN

Object    null

undefined   一定是false

Number类型

  • 整数:

var a=10;//十进制

var a=010;//八进制

var a=0x10;//十六进制

  • 浮点数:

var a=1.1

由于保存浮点数所需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数转换为整数值。

所以如果小数点后没有跟任何数值,或者只有0,那么该值会被自动转换为整数。

例如var f=10.0//整数,解析为10

跟python和java一样,永远不要测试特定的浮点数值!

  • 数值范围的限制:

Number.MIN_VALUE是最小值,Number.MAX_VALUE是最大值。如果超出了这个数,Number的值会被自动转换成

Infinity或者-Infinity。Infinity不能参与计算,不是可计算的数值。可以使用isFinite()函数来检测。

  • NaN

Not a Number。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。在其他编程语言中,任何数值除以非            数值都会报错。在ECMAScript中,任何数值除以非数值都会返回NaN。因此不会影响其他代码的执行。

NaN与任何值都不相等,包括NaN本身。为了解决这个问题,ECMAScript定义了isNaN函数,这个函数接受一个参数,该            参数可以是任何类型。如果这个参数可以被转换为Number则返回false,如果不行则返回true。

譬如,isNaN("123")//false,转换为123

  • 数值转换

Number()  //适用于任何类型,如果是true,返回1,如果是false,返回0,如果是null,返回0,如果是undefined,返回                    NaN。

对于字符串,会忽略前导0,如果字符串中有包含有效的十六进制,例如“0xf",则会将其转换为相同大小的十进制整数                  值,如果字符串是空的,返回0,如果字符串包含有效的浮点格式,则将其转换成对应的浮点数值。如果字符串包含上述              之外的字符,则将其转换成NaN。

譬如 Number("123blue")返回NaN

因此可见,使用Number转换字符串为数字并不合理。

 

parseInt(),parseFloat()   //适用于字符串

在处理字符串转换数字时,更常用的是parseInt和parseFloat函数。第一个有效字符必须是数字。一直遇到第一个非数字字            符为止。parseInt(字符串,进制)。parseFloat只解析十进制。第二个小数点就是无效字符。

parseInt()函数与Number的区别是

       对于空字符串,Number返回0,parseInt返回NaN。

       对于“123blue",Number返回NaN,parseInt返回123。

string类型

可以用双引号/单引号。没有区别

具有length属性。

不可变。如果要改变某个变量存储的字符串,要先销毁原来的字符串,再用另一个包含新值的字符串填充该变量。

把 一个值转换为字符串有两种方式,第一种是使用几乎每个值都有的toString()方法。如number,boolean,object,string类型            都有toString()方法。string.toString返回字符串的副本。但是null和undefined没有这个方法。因此在不确定转换的值的情况            下,可以用String函数。String函数遵循的规则是,如果有toString方法,调用这个方法,如果没有,返回字面量

("null","undefined")。

在调用number的tostring方法时,可以加一个参数用于指定进制。

任何变量与字符串相加都会变成字符串。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值