JS高程3.基本概念(2)

1.ECMAScript数据类型

  5种简单数据类型,分别是:

    Undefined

    Null

    Boolean

    Number

    String

  1种复杂数据类型:

    Object

(1)typeof操作符——检测给定变量的数据类型

  “undefined”——未定义

  “booleam”——布尔值

  “string”——字符串

  “number”——数值

  “object”——对象或是null

  “function”——函数

eg:

1  <script type="text/javascript">
2     var m="hello!"
3     alert(typeof(m));
4     alert(typeof m);
5     alert(typeof 93);
6     </script>

出现3个提示框,分别是:

注意:(1)以上例子说明,typeof操作符的操作数可以是变量,也可以是数值字面量。

   typeof是一个操作符,而不是一个函数,所以例子中的圆括号可以使用,但不是必需的。

     (2)调用 typeof null返回的是 “Object” ,因为特殊值null被认为是空的对象引用。

2.Undefined类型

  undefined类型只有一个值,即特殊的undefined。使用var声明变量但没有进行初始化赋值时,这个变量的值就是undefined。

  eg:

  

1 var message;
2 alert(message);

  结果图:

  上面的例子只是声明了变量message,但没有对其进行初始化。

注意:

  (1)未经初始化的变量,其默认值为undefined,与没有进行定义的变量是不一样的。

eg:

1 var message;
2     alert(message);
3     alert(age);

第三行会出现错误:

  

  运行以上代码,第一个警告框会显示变量message的值,即undefined。第二个警告框由于传递给alert()函数的是没有声明的变量age,则会导致一个错误。

  对没有声明的变量,只能执行一项操作,即使用typeof操作符检测其数据类型(对没有声明的变量调用delete不会导致错误,但是这样做没有实际意义,而且在严格模式下会导致错误。)

  (2)使用alert()函数,输出的变量的值,已经定义声明,但是没有进行初始化的变量的值为“undefined”,使用typeof操作符输出的变量的数据类型,已经定义声明,但是没有进行初始化的变量的数据类型也是“undefined”。

  (3)对没有定义的变量使用typeof操作符同样也是返回undefined。

  eg:

1 var message;
2     alert(typeof message);
3     alert(typeof age);

上面的代码会出现两个警告框,都是显示“undefined”。

3.Null类型

  null类型的数据只有一个值,就是null,null值表示一个空对象的指针,当用typeof操作符检测null时,会返回“object”。

eg:

1 var car=null;
2     alert(typeof(car));

  如果定义的变量是准备来保存对象的,最好将该变量初始化为null而是不其他的值。实际上undefined值是派生自null值的,因此ECMA-262规定它们的相等性测试要返回true。

alert(null==undefined);

    

注意:

  尽管null和undefined有这样的关系,但是它们的用途是完全不同的。我们知道,在一般情况下,都没有必要把一个变量的值显式地设置为undefined,但是null却不同,只要意在保存对象的变量还有真正保存对象,就应该明确地让该变量保存为null值。

  这样做不仅可以体现null作为空对象指针的惯例,也有助于进一步区分null和undefined。

4.Boolean类型

  (1)该类型的值:true和false。(这两个值和数字值不是一回事,因此true不一定等于1,false不一定等于0。)

  注意:Boolean类型的字面值是区分大小写的。

  (2)ECMAScript中所有类型的值都有与Boolean值等价的值。要将一个值转化为其对应的Boolean值,可以转换函数Boolean(),至于放回的值是true还是false,取决于要转换至的数据类型及其实际值。

注:各种数据类型及其对应的转换规则,详见高程P26.

5.Number类型

  (1)八进制字面值的第一位必须是0,当数字序列超过0~7时,前导0会被忽略,后面的数字将当做十进制数值解析。

    八进制子在严格模式下无效的,会导致Javascript引擎抛出错误。

  (2)在进行算术运算时,八进制和十六进制都会被转换成十进制数值。

  (3)浮点数:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

    注意:由于保存浮点数值需要的内存空间是保存整数的两倍,因此ECMAScript会不失时机地将浮点数转换为整数来保存。显然,如果小数点后没有任何数字,这个数值可以作为整数来保存,如果浮点数值本身就是一个整数(eg:1.0),那么该值也会被转换为整数。

  (4)默认情况下,ECMAScript会将小数点后面带有6个零以上的浮点数值转换为以e表示法表示的数值。

  (5)浮点数的最高精度为17位小数,但是在进行计算时其精度远不如整数。

    eg:0.1+0.2的结果不是等于0.3,而是等于0.30000000000000004.

用代码测试情况如下:

var a=0.1,b=0.2;
    if(a+b==0.30000000000000004){
        alert("You got 0.3");
    }

结果:

当代码为:

var a=0.1,b=0.2;
    if(a+b==0.3){
        alert("You got 0.3");
    }

时,测试无法通过。

因此,一般不要测试某个特定的浮点数值。

  

  

时间: 2024-10-10 06:31:39

JS高程3.基本概念(2)的相关文章

JS高程3.基本概念(1)

1.语法 (1)ECMAScript中的一切(变量,函数名和操作符)都是区分大小写的. (2)标识符 标识符的第一个字符必须是字母,下划线或是美元符号. 其他字符可以是字母,下划线,美元符号和数字. ECMAScript标识符采用驼峰大小写的格式. (3)严格模式(strict mode) 严格模式是为了Javascript定义了一种不同的解析与执行模型.在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的 操作也会抛出错误. 要在整个脚本中启用严格模式,可以在

JS高程3.基本概念(4)操作符

ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应用于对象时,相应的操作符通常会调用对象的valueOf()和(或)toString()方法,以便取得可以操作的值.) 1.一元操作符 (1)递增和递减操作符 需要注意的是: eg: 前置++age:变量的值在语句被求值之前改变. 后置age++:变量的值在语句被求值之后改变. 执行前置递增和递减操作

JS高程3.基本概念(6)函数

1.ECMAScript中的函数使用function关键字来声明. eg: 1 function sum (num1,num2){ 2 alert(num1+num2); 3 } 4 sum(3,7); 注意: 在有return语句的函数中,函数会在执行完return语句后停止并立即退出.因此,位于return语句之后的任何代码都永远不会执行. eg: 1 function sum (num1,num2){ 2 return num1+num2; 3 alert("Hello!");/

JS高程3.基本概念(5)语句

1.if语句 2.do-while语句:后测循环语句,循环体内的代码至少执行一次. 3.while语句:前测循环语句. 4.for语句:前测循环语句. 注意:在ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到. eg: 1 var count=10; 2 for(var i=0;i<count;i++){ 3 alert(i); 4 } 5 alert(i); 以上代码的执行效果是,弹出从0到9的警告框,这是for语句循环的结果,最后弹出显示10的警告框,这是f

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

javascript (js)中的基本概念

1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, 在JS中表示16进制通过在数字前加"0x"或"0X"(零). 1.2 string (字符串)字符串类型是实用单引号('')或双引号("")括起来的unicode字符序列, 一些特殊的字符可以通过转义符来标识.如果字符串用在数字表达式环境中,字符串