数据类型

一. 数据类型:

ECMAScript 中有5 种简单数据类型:==Undefined、Null、Boolean、Number、String 和Object==。
ECMAScript 不支持任何创建自定义类型的机制,所有值都成为以上6 中数据类型之一。

[TOC]

1. Undefined类型

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

var box;
alert(box);

PS:我们没有必要显式的给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为undefined;而undefined 主要的目的是为了用于比较,ECMAScript 第3 版之

前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。未初始化的变量与根本不存在的变量(未声明的变量)也是不一样的。

//类型返回的值都是undefined
var box;
alert(typeof box);
alert(typeof age); 
//以后必须声明一个变量就给它赋值,以避免出现这种问题

2. Null类型

Null 类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引用(指针),而typeof 操作符检测null 会返回object。

var box = null;
alert(typeof box);

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null。这样,当检查null 值就知道变量是否已经分配了对象引用了。

var box = null;
if (box != null) {
alert('box 对象已存在!');
}

有个要说明的是:undefined 是派生自null 的,因此ECMA-262 规定对它们的相等性测试返回true。
alert(undefined == null);

3. String类型

字符串是由0个或者多个字符组成的序列,它可以包含大小写字母,数字,标点符号或其他字符,也可以是汉字。程序中的字符串类型数据是包含在单引号或双引号中的

var a="你好javascript";
var b='你好javascript';

4. Boolean类型

5. Number 类型

6. Object 类型

二. 变量


1. 变量的命名

Javascript 变量的命名规则如下:

  • 必须以字母或者下划线开头,其他字符可以是数字,字母或者下划线
  • 变量名不能包含空格、加号或减号等符号
  • Javascript 的变量名是严格区分大小写的。
  • 不能使用Javascript的关键字
abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield

2. 变量的声明

Javscript 变量由关键字 var 声明

语法格式: var variablename

3. 变量的赋值

var lesson="学习Jvascript“;

注意:

  • 如果声明了变量,并未对其赋值,则其值默认为 undefined

4. 变量的类型

javascript是一种弱类型的程序语言

三. 运算符


1. 算术运算符

算术运算符用于执行变量与/或值之间的算术运算。
给定 y=5,下面的表格解释了这些算术运算符:

运算符 描述 例子 结果
+ x=y+2 x=7
- x=y-2 x=3
* x=y*2 x=10
/ x=y/2 x=2.5
% 求余数 (保留整数) x=y%2 x=1
++ 累加 x=++y x=6
-- 递减 x=--y x=4

==注意:1/0= Infinity 0/0=NaN #220080==

2. 赋值运算符

赋值运算符用于给 JavaScript 变量赋值。
给定 x=10y=5,下面的表格解释了赋值运算符:

运算符 例子 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0

3. 字符串运算符

+ 运算符, += 运算符可用于连接字符串。
给定 text1 = "Good ", text2 = "Morning", 及 text3 = "", 下面的表格解释了字符串运算符的使用:

运算符 例子 text1 text2 text3
+ text3 = text1 + text2 "Good " "Morning" "Good Morning"
+= text1 += text2 "Good Morning" "Morning" ""

4. 比较运算符

比较运算符用于逻辑语句的判断,从而确定给定的两个值或变量是否相等。

给定 x=5, 下表展示了比较运算符的使用:

运算符 描述 比较 结果
== 等于 x == 8 false
x == 5 true
=== 值及类型均相等(恒等于) x === "5" false
x === 5 true
!= 不等于 x != 8 true
!== 值与类型均不等(不恒等于) x !== "5" true
x !== 5 false
> 大于 x > 8 false
< 小于 x < 8 true
>= 大于或等于 x >= 8 false
<= 小于或等于 x <= 8 true

关于比较运算符,你可以阅读我们的 JavaScript 比较运算符教程。


5. 条件运算符

条件运算符用于基于条件的赋值运算。

给定 x=6 and y=3, 下表演示了条件运算符的运算:

语法 例子
变量 = (条件) ? 值1:值2 voteable = (age < 18) ? "太年轻而不能":"年龄够";

6. 逻辑运算符

逻辑运算符用来确定变量或值之间的逻辑关系。

给定 x=6 and y=3, 以下实例演示了逻辑运算符的使用:

运算符 描述 例子
&& (x < 10 && y > 1) 为 true
|| (x == 5 || y == 5) 为 false
! !(x == y) 为 true

7. 位运算符

位运算符工作于32位的数字上。任何数字操作都将转换为32位。结果会转换为 JavaScript 数字。

运算符 描述 例子 类似于 结果 十进制
& AND x = 5 & 1 0101 & 0001 0001 1
| OR x = 5 | 1 0101 | 0001 0101 5
~ 取反 x = ~ 5 ~0101 1010 -6
^ 异或 x = 5 ^ 1 0101 ^ 0001 0100 4
<< 左移 x = 5 << 1 0101 << 1 1010 10
>> 右移 x = 5 >> 1 0101 >> 1 0010 2

8. 其他运算符

1).逗号运算法

2). typeof操作符

typeof 操作符是用来检测变量的数据类型。对于值或变量使用typeof 操作符会返回如下字符串。

undefined 未定义
boolean 布尔值
string 字符串
number 数值
object 对象或null
function 函数

[图片上传失败...(image-11669b-1533991920999)]

typeof 操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:typeof(box),但,typeof 是操作符而非内置函数。PS:函数在ECMAScript 中是对象,不是一种数据类型。所以,使用typeof 来区分function 和object 是非常有必要的。

3). new 运算符

通过new 运算符 可以用来创建一个新的对象实例。

obj=new Object;
arr= new Array();
Date2=new Date(August 8,2018);

四.什么是表达式

var a=3;
var b=4;
var c=a+b//表达式
语句 如:var a=4;if(a<5){alert(111)};

五. 数据类型的转换

ToBoolean ( argument )

Argument Type Result
Undefined Return false
Null Return false
Boolean Return argument
Number 仅当argument为 +0, -0, or NaN时, return false; 否则一律 return true
String 仅当argument是空字符串(长度为0)时, return false; 否则一律 return true
Symbol Return true
Object Return true

这些规定都来自ECMA的标准,js内部就是这样实现的。 只需要记忆几种返回false的情况就可以了,其他一律返回false。

ToNumber ( argument )

Argument Type Result
Undefined Return NaN
Null Return +0
Boolean 如果 argument 为 true, return 1. 如果 argument 为 false, return +0
Number 直接返回argument
String 将字符串中的内容转化为数字(比如"23"->23),如果转化失败则返回NaN(比如"23a"->NaN)
Symbol 抛出 TypeError 异常
Object 先primValue = ToPrimitive(argument, Number),再对primValue 使用 ToNumber(primValue)

由上表可见ToNumber的转化并不总是成功,有时会转化成NaN,有时则直接抛出异常。

ToString ( argument )

Argument Type Result
Undefined Return "undefined"
Null Return "null"
Boolean 如果 argument 为 true, return "true".如果 argument 为 false, return "false"
Number 用字符串来表示这个数字
String 直接返回 argument
Symbol 抛出 TypeError 异常
Object 先primValue = ToPrimitive(argument, hint String),再对primValue使用ToString(primValue)

你可能感兴趣的:(数据类型)