您的位置:首页 > Web前端 > JavaScript

js基本概念(上)之数据类型

2017-12-06 15:29 369 查看
语法

区分大小写

typeof(关键字)不能用作变量、函数名或操作符

而typeOf则可以,O为大写,即它不是关键字也不是保留字

标识符

第一个字符必须是一个字母、下划线(_)或一个美元符号($)

其他字符可以是字母、下划线、美元符号或数字

采用驼峰大小写格式,例:

firstSecond
myCar
doSomethingImportant


关键字和保留字

in是关键字

如果使用了关键字作标识符,会导致”Identified Expected”错误

变量

变量是松散类型的,即可以用来保存任何类型的数据

省略var操作符可以定义全局变量

在全局作用域中声明变量,不管变量是否使用var操作符创建,都是全局变量

在函数内声明变量(不推荐,因为在局部作用域中定义的全局变量很难维护)

function test()
{
message = "hi";     //全局变量(省略var)
}
test();
alert(message);         //"hi"


function test()
{
var message = "hi";   //局部变量
}
test();
alert(message);            //错误!


初始化变量并不会把它标记为任何一种数据类型,只是给变量赋值而已。因此可以在修改变量值的同时修改值的类型

var message = "hi";
message = 100;  //有效,但不推荐


数据类型

基本数据类型

Undefined

Null

Boolean

Number

String

复杂数据类型

Object(本质上是由一组无序的名值对组成的)

typeof操作符

”undefined”——如果这个值未定义

“boolean”——如果这个值是布尔值

“string”——如果这个值是字符串

“number”——如果这个值是数值

“object”——如果这个值是对象null(null被认为是一个空的对象引用)

“function”——如果这个值是函数

从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的。

几个使用typeof操作符的例子:

var message = "some string";
alert(typeof message);          //"string"
alert(typeof(message));         //"string",括号为非必需的,因为typeof是一个操作符而不是函数
alert(typeof 95);               //"number"


typeof与instanceof的区别

Undefined类型

已声明未经初始化的变量默认就会取得undefined值:

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


变量已声明与未声明

var message;        //这个变量声明之后默认取得了undefined值
var age             //这个变量并没有声明
alert(message);     //"undefined"
alert(age);         //产生错误

//所以当用typeof检测变量数据类型,结果为"undefined"的时候,有两种情况:要么是变量已声明为未初始化给它赋值,要么是变量没有声明。
alert(typeof message);      //"undefined"
alert(typeof age;           //"undefined"


Null类型

从逻辑角度来看,null值表示一个空对象指针

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


如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用:

if(car != null)
{
//对car对象执行某些操作
}


undefined值是派生自null值的

alert(null == undefined);    //true


变量不应显式地赋值为undefined,而显式地给对象赋值为null则是推荐的做法:

var message = undefined;    //不推荐
var car = null;             //推荐


Boolean类型

Boolean(undefined) = false;

Number类型

八进制(第一位必须是零(0),然后是八进制数字序列(0-7)。如果数值超出范围,那么前导零将被忽略,后面的数值将被当做十进制数值解析)

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


十六(前两位必须是0x,后跟0-9、A-F(可大写也可小写))

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


浮点数值

保存浮点数值需要的内存空间是保存整数值的两倍

永远不要测试某个特定的浮点数值。浮点数值的最高精度是17位小数,然而进行算术计算时其精确度远远不如整数

if(a + b == 0.3)    //不要做这样的测试!
{
alert("You got 0.3.");
}


Number.MIN_VALUE———5e-324

Number.MAX_VALUE———1.7976931348623157e+308

NaN

在ECMAScript中任何数值除以0会返回NaNR

任何涉及NaN的操作(例如NaN/10)都会返回NaN

NaN与任何值都不相等,包括NaN本身

alert(NaN == NaN);  //false


isNaN()函数(是否不是数值)

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


String类型

toString()

除null和undefined外其他数据类型都有这个方法

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"


Object()类型

通过执行new操作符后跟要创建的对象类型的名称来创建

var o = new Object();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  读书笔记 javascript