二. 变量初步

  ECMAScript是一种弱类型语言,表现为变量只是用于保存值的占位符。换言之,变量可以用来保存任何类型的数据。

  给变量mind,age赋值:

MyMood=”happy”;

MyAge=”27”;

  Js不要求提前声明变量,但是声明变量是一个良好的习惯。你可以一次声明多个变量:

var MyMood,MyAge

   或者更加精炼:

var MyMood=”happy”,MyAge=”27”;

 

 三. 六大数据类型(其实就是变量类型)

  ECMAScript包括5种简单数据类型和1种复杂数据类型。

  五类简单数据类型:undefined,null ,bolean,number和string。

  一类复杂数据类型:object。Object本质上是由一组无序的名值对组成的。

 

  【首先,运用typeof操作符看数据类型】

  typeof其实是一个判断+输出的过程。但是typeof不是一个函数。

  alert(typeof(变量))

alert(typeof(59));//59是一个数值,输出”number”

  问题:在js中键入alert(typeof(变量))可能返回哪些值?

  以下就这个问题分类讨论之。

   1.Undefined

  字面意思是未定义,只有一个值就是undefined。一个数据未声明时,alert(typeof)结果会产生错误,但是返回的就是undefined。如果声明了变量但未初始化(即定义数据类型),比如我var a; alert(a)输出的都是undefined数据型。结果是一样的。

  换言之,以下情况会返回undefined:你真的没定义;定义了,但是没给值。

  因此我们可以得出结论:js中不强求提前声明变量。

  那为什么声明变量是良好的习惯呢?

  更好的判断:如果我们做到事事在事前声明,当typeof返回undefined时,就知道该变量未被声明,而不是未被初始化(未定义数据类型)。

  那要不要凡事初始化?这在其它编程语言中或许是个不错的习惯,然而在此没必要。毕竟ECMAScript是一个弱类型语言,变量本身不具有类型。

   

  

  2. Null空对象

   Null表示一个空对象,所以对其进行typeof判断,输出的是object(对象)。自身只有一个值那就是null。实际上undefined派生自none,在直接的判断中,null==undefined的判断值为true。但是二者的应用范围完全不同。最明显的例子是当你声明了一个对象,但是还没存放东西,都应该明确声明为null。

 

  3. Boolean类型

  布尔值数据只有两个字面值那就是true和false。函数Boolean(a)可以把数据a转化为布尔值。当a为一下数据类型时。判断如下:

  真的:true

  非零的数字,非空的字符串(除了var a=""),非空对象为真。

  假的:false 

  数字0和NaN 空字符串 空对象(null)undefined

  布尔值常被用于函数控制语句中。

  

 

   4. number

  数字类型:在其它强类型语言中,数字包括整数(number)和浮点数(float),在js中通通定义为number。

  浮点数值要求数值必须包含一个小数点,且小数点必须有一位小数。浮点数最多被解析为17位。如阿伏伽德罗常数可表示为:6.22e22。而0.1+0.2的结果是0.3+4*10^(-17).储存的值也不是无限的。只是说超过一定的值后,系统判定为Infinity(无限)值。

 

  【数据类型转换示例——字符串转换数字】

  (1)parsInt()和parsInt()

  给它一个字符串,可以从左往右提取第一段数字为整数。

  如果parsInt(12px),结果为12。

  parsInt(12px34)结果为12;

  parsInt(px)结果为NaN(Not a Number):不是一个数字。NaN(非数值)是一个特殊的数值。NaN和任何东西运算都是NaN,它与任何值都不相等,包括NaN本身。

  为什么要把NaN定义为数值?——因为任何值除以非数值都会导致代码停止执行,如果把NaN定义为一个数值,出现这种情况(设计NaN的任何数值计算),都自动返回NaN,就不会出错了。

 

  如何检测NaN?:

 

  (2)显式(强制)转换——isNaN函数

  isNaN函数:把可能转换为数值的数据(字符串,布尔值)尽可能转换为数值,再进行判断,非数值才返回true。如isNaN(“95”)转换结果为95,判断结果为false。再如:isNaN(“true”)转换结果为1,判断结果为false。也就是说当isNaN返回为true时,所判断的对象就不是一个数字。

  设想情景:假设两个文本输入框(txt1,txt2),一个按钮,在文本输入框输入数字,点击按钮弹出数字之和。如果用户在文本框输入的是字符串,写一个函数弹出警告。

 

var num=parseInt(oTxt1.value)+parseInt(oTxt2.value);

if(isNaN(num)){

alert('您输入的计算参数不正确');

}else{alert(num)}

  这样对用户友好些。

 

  (3)隐式类型转换:

 

var a='12';

var b=12;

alert(a==b)

 

 

  输出值为true,偷偷地转换了。

 

  但如果最后一行是alert(a===b)

 

  输出值为false;

 

  再看另外一个例子

 

var a='12';

var b='7';

alert(a-b);

  结果为5.

  结论:四则运算中,除了加法,其它都是隐性转换。

 

   5.string

  字符串,理论上包在单引号,双引号内的内容都是字符串。如果字符串包含引号回车等数据,需要用到字符字面量(类似HTML实体)来处理

  字符串是只读的。实际操作中可以用"java"+"script"这样的方法给变量添加储存,但本质上是重新赋值!

  转换为字符串推荐使用“string()”函数。自变量是什么值,就被转换为对应的字符串。

 

  6.object

  广义来说,js中所有都是对象。但狭义地说,对象是一组数据和功能的集合。属于复合类型。声明一个新对象可以用

  var a=new Object();

  那么我们可以断言,除了数字、字符串、布尔值、undefined外,一切都是对象。

  数组,日期也是对象。

  关于对象的种种属性,将在以后阐述。

 

 

 

 posted on 2016-09-02 19:05  葡萄美酒夜光杯  阅读(330)  评论(0编辑  收藏  举报