Javascript学习笔记-基本概念-数据类型

1、typeof

操作符的返回值:

  • "undefined"——如果这个值未定义;
  • "boolean"——如果这个值是布尔值;
  • "string"——如果这个值是字符串;
  • "number"——如果这个值是数值;
  • "object"——如果这个值是对象或null;14
  • 141"function"——如果这个值是函数。

使用例子:

var message = "some string";
alert(typeof message);        // "string"
alert(typeof(message));       // "string"
alert(typeof 95);             // "number"

 

 

2、undefined

使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,例如:

var message;
alert(message == undefined);    //true

 

以上和下面的是对等的。

var message = undefined;
alert(message == undefined);     //true

 

对未初始化的变量执行typeof 操作符会返回undefined 值,而对未声明的变量执行typeof 操作符同样也会返回undefined 值。

 

var message;                    // 这个变量声明之后默认取得了undefined 值
// 下面这个变量并没有声明
// var age

alert(typeof message);         // "undefined"
alert(typeof age);              // "undefined"

 

 

3、null

null 值表示一个空对象指针,使用typeof 操作符检测null 值时会返回"object

var car = null;
alert(typeof car);          // "object"

 

 

4、Boolean

可以调用转型函数Boolean(),将一个值转换为其对应的Boolean 值。

var message = "Hello world!";
var messageAsBoolean = Boolean(message);

 

数据类型

转换为true的值

转换为false的值

Boolean

true

false

String

任何非空字符串

""(空字符串)

Number

任何非零数字值(包括无穷大)

0和NaN

Object

任何对象

null

Undefined

n/a(不适用)

undefined

 

var message = "Hello world!";
if (message){
    alert("Value is true");
}

 

 

5、number

可以用来表示十进制整数,如:

var intNum = 55;         // 整数

 

可以用来表示八进制整数,八进制第一位必须是零(0),八进制数字序列(0~7),如果数值超过范围,前导零将被忽略,按照十进制解析,如:

var octalNum1 = 070;         // 八进制的56
var octalNum2 = 079;         // 无效的八进制数值——解析为79
var octalNum3 = 08;           // 无效的八进制数值——解析为8

 

可以表示十六进制,前面两位必须是0x,后面跟任何十六进制数字(0~9及A~F),字母A~F可以大写也可以小写,如:

var hexNum1 = 0xA;            // 十六进制的10
var hexNum2 = 0x1f;          // 十六进制的31

 

在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。

 

(1)浮点数值

 

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。虽然小数点前面可以没有整数,但不推荐,如

var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1;            // 有效,但不推荐

 

对于那些极大或极小的数值,可以用e 表示法(即科学计数法)表示的浮点数值表示。

var floatNum = 3.125e7;     // 等于31250000

 

 

(2)数值范围

 

ECMAScript 能够表示的最小数值保存在Number.MIN_VALUE 中——在大多数浏览器中,这个值是5e-324;

能够表示的最大数值保存在Number.MAX_VALUE 中——在大多数浏览器中,这个值是1.7976931348623157e+308。

超出JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的Infinity 值。如果这个数值是负数,则会被转换成-Infinity(负无穷),如果这个数值是正数,则会被转换成Infinity(正无穷)。

 

(3)NaN

 

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

 

NaN 本身有两个非同寻常的特点:

  • 任何涉及NaN 的操作(例如NaN/10)都会返回NaN;
  • NaN 与任何值都不相等,包括NaN 本身。

 

isNaN()函数, 确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试

将这个值转换为数值。某些不是数值的值会直接转换为数值,如:

alert(isNaN(NaN));                //true
alert(isNaN(10));                 //false(10 是一个数值)
alert(isNaN("10"));               //false(可以被转换成数值10)
alert(isNaN("blue"));             //true(不能转换成数值)
alert(isNaN(true));               //false(可以被转换成数值1)

 

 

(4)数值转换

Number()函数可以用于任何数据类型,parseInt()和parseFloat()专门用于把字符串转换成数值。

Number()函数的转换规则如下。

  • 如果是Boolean 值,true 和false 将分别被转换为1 和0。
  • 如果是数字值,只是简单的传入和返回。
  • 如果是null 值,返回0。
  • 如果是undefined,返回NaN。
  • 如果是字符串,遵循下列规则:
  1. 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值
  2. 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值
  3. 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
  4. 如果字符串是空的(不包含任何字符),则将其转换为0
  5. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN。
  • 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

 

var num1 = Number("Hello world!");      //NaN
var num2 = Number("");             //0
var num3 = Number("000011");         //11
var num4 = Number(true);            //1

 

parseInt()函数的转换规则:

var num1 = parseInt("1234blue");               // 1234
var num2 = parseInt("");                        // NaN
var num3 = parseInt("0xA");                     // 10(十六进制数)
var num4 = parseInt(22.5);                      // 22
var num5 = parseInt("070");                     // 56(八进制数)
var num6 = parseInt("70");                      // 70(十进制数)
var num7 = parseInt("0xf");                     // 15(十六进制数)

 为了消除在使用parseInt()函数时可能导致分歧问题,转换时引入基数(即多少进制),如:

 

var num = parseInt("0xAF", 16);       //175
//引入基数后,十六进制字符串前面可以不用带“0x”
var num1 = parseInt("AF", 16);        //175
var num2 = parseInt("AF");          //NaN

var num1 = parseInt("10", 2);        //2 (按二进制解析)
var num2 = parseInt("10", 8);        //8 (按八进制解析)
var num3 = parseInt("10", 10);        //10 (按十进制解析)
var num4 = parseInt("10", 16);        //16 (按十六进制解析)

 parseFloat()函数转换规则:

var num1 = parseFloat("1234blue");     //1234 (整数)
var num2 = parseFloat("0xA");        //0
var num3 = parseFloat("22.5");        //22.5
var num4 = parseFloat("22.34.5");      //22.34
var num5 = parseFloat("0908.5");          //908.5
var num6 = parseFloat("3.125e7");         //31250000

 

 

6、String

 (1)字符字面量

字面量 含义
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号('),在用单引号表示的字符串中使用。例如:'He said, \'hey.\''
\" 双引号("),在用双引号表示的字符串中使用。例如:"He said, \"hey.\""
\xnn 以十六进制代码nn表示的一个字符(其中n为0~F)。例如,\x41表示"A"
\unnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。例如,\u03a3表示希腊字符Σ

任何字符串的长度都可以通过访问其length 属性取得.

var text = "This is the letter sigma: \u03a3.";
alert(text.length);     // 输出28

转换为字符串

var age = 11;
var ageAsString = age.toString();    // 字符串"11"
var found = true;
var foundAsString = found.toString(); // 字符串"true"

多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。

var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"

String()函数遵循下列转换规则:

  • 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果;
  • 如果值是null,则返回"null";
  • 如果值是undefined,则返回"undefined"。
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"

 

7、object

ECMAScript的对象就是一组数据和功能的集合。

创建格式:

var o = new Object();
var o = new Object;   // 有效,但不推荐省略圆括号

 

Object的属性和方法:

  • constructor:保存着用于创建当前对象的函数,对于前面的例子,构造函数(constructor)就是Object()。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
  • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

 

posted @ 2017-12-30 01:06  打卤  阅读(133)  评论(0编辑  收藏  举报