一. 数据类型:
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=10 和 y=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) |