ECMAScript 基础

ECMAScript 语法

  • 区分大小写
  • 变量是弱类型的 (ECMAScript 中的变量无特定的类型,定义变量时只用 var 运算符,可以将它初始化为任意值。因此,可以随时改变变量所存数据的类型(尽量避免这样做))
  • 每行结尾的分号可有可无(前提是不破坏代码的整体性)
  • 有两种类型的注释
    1.单行注释以双斜杠开头(//)
    2.多行注释以单斜杠和星号开头(/),以星号和单斜杠结尾(/)
  • 括号表示代码块———代码块表示一系列应该按顺序执行的语句

ECMAScript 变量

  • 声名变量 使用var +变量名定义 如:var show1 = “hahaha”;
  • 命名变量
    命名规则:
    1.第一个字符必须是字母、下划线(_)或美元符号($)
    2.余下的字符可以是下划线、美元符号或任何字母或数字字符
    还有一些常见的命名规则:
    Caml标记法:第一个单词首字母小写,后面的单词首字母都大写;如:var firstTestValue = 1:
    Pascal标记法:所有单词的首字母都大写;如:var SecondTestValue = 2:
    匈牙利类型标记法:在以Pascal标记法命名的变量前附加一个小写字母(或小写字母序列)说明该变量的类型。如:var iThirdTestValue = 3;

ECMAScript 的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。虽然说声明变量不是必须的,但一名优秀的程序员应该有良好的代码习惯,最好还是声明每一个变量后再使用他们哦。

ECMAScript 关键字

break
case
catch
continue
default
delete
do
else
finally
for
function
if
in
instanceof
new
return
switch
this
throw
try
typeof
var
void
while
with

关键字不能作为变量名或函数名

ECMAScript 保留字

abstract
boolean
byte
char
class
const
debugger
double
enum
export
extends
final
float
goto
implements
import
int
interface
long
native
package
private
protected
public
short
static
super
synchronized
throws
transient
volatile

保留字不能用做变量名或函数名

ECMAScript 原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。
一、原始值
存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
包括:Undefined、Null、Boolean、Number 和 String 型。
由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。

  • typeof类型

对变量或值调用 typeof 运算符将返回下列值之一:

  • undefined - 如果变量是 Undefined 类型的
  • boolean - 如果变量是 Boolean 类型的
  • number - 如果变量是 Number 类型的
  • string - 如果变量是 String 类型的
  • object - 如果变量是一种引用类型或 Null 类型的
    注释:您也许会问,为什么 typeof 运算符对于 null 值会返回 “Object”。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。
  • Undefined类型
  • 未初始化的变量将被赋值undefined
  • 值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值
  • Null类型
  • 值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
  • 尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
  • Boolean类型

-它有两个值 true 和 false (即两个 Boolean 字面量)。

  • 即使 false 不等于 0,0 也可以在必要时被转换成 false,这样在 Boolean 语句中使用两者都是安全的。
  • Number类型
  • 这种类型既可以表示 32 位的整数,还可以表示 64 位的浮点数。
    -直接输入的(而不是从另一个变量访问的)任何数字都被看做 Number 类型的字面量
  • String类型
  • 没有固定大小的原始类型
  • 字符串字面量是由双引号(")或单引号(’)声明的
类型转换
A String 数字 tostring() parseInt() parseFloat() A String 数字

强制类型转换:

  • Boolean(value) - 把给定的值转换成 Boolean 型;
  • Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
  • String(value) - 把给定的值转换成字符串;
    二、 引用值。
    存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。如果一个值是引用类型的,那么它的存储空间将从堆中分配。由于引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。而地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响
  • 引用类型通常叫做类(class)。
  • 注意:从传统意义上来说,ECMAScript 并不真正具有类。事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词。ECMAScript 定义了“对象定义”,逻辑上等价于其他程序设计语言中的类。

ECMAScript运算符

  • 一元运算符
  1. delete运算符删除对以前定义的对象属性或方法的引用。
    delete 运算符不能删除开发者未定义的属性和方法。
  2. void运算符对任何值返回undefined
  3. 前增量/前减量运算符
  4. 后增量/后减量运算符
  5. 一元加法和一元减法
  • 位运算符

1. 位运算 NOT
位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一。
2. 位运算 AND
位运算 AND 由和号(&)表示,直接对数字的二进制形式进行运算
3. 位运算 OR
位运算 OR 由符号(|)表示,也是直接对数字的二进制形式进行运算
4. 位运算 XOR
位运算 XOR 由符号(^)表示,当然,也是直接对二进制形式进行运算。XOR 不同于 OR,当只有一个数位存放的是 1 时,它才返回 1
5. 左运算符
左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量
6. 有符号右移运算
有符号右移运算符由两个大于号表示(>>)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。
7. 无符号右移运算
无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。

把运算数转换成 32 位数字
把二进制数转换成它的二进制反码
把二进制数转换成浮点数

  • Boolean运算符

1.逻辑 NOT 运算符
逻辑 NOT 运算符的行为如下:
如果运算数是对象,返回 false
如果运算数是数字 0,返回 true
如果运算数是 0 以外的任何数字,返回 false
如果运算数是 null,返回 true
如果运算数是 NaN,返回 true
如果运算数是 undefined,发生错误
通常,该运算符用于控制循环
2.逻辑 AND 运算符
逻辑 AND 运算的运算数可以是任何类型的,用符号(&&)表示
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
如果两个运算数都是对象,返回第二个对象。
如果某个运算数是 null,返回 null。
如果某个运算数是 NaN,返回 NaN。
如果某个运算数是 undefined,发生错误。
3.逻辑 OR 运算符
ECMAScript 中的逻辑 OR 运算符与 Java 中的相同,都由双竖线(||)表示
与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:
如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
如果两个运算数都是对象,返回第一个对象。
如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
如果某个运算数是 undefined,发生错误。

  • 乘性运算符

1. 乘法运算符
乘法运算符由星号(*)表示,用于两数相乘。
如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
如果某个运算数是 NaN,结果为 NaN。
Infinity 乘以 0,结果为 NaN。
Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。
Infinity 乘以 Infinity,结果为 Infinity。
注释:如果运算数是数字,那么执行常规的乘法运算,即两个正数或两个负数为正数,两个运算数符号不同,结果为负数。
2. 除法运算符
除法运算符由斜杠(/)表示,用第二个运算数除第一个运算数
如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
如果某个运算数是 NaN,结果为 NaN。
Infinity 被 Infinity 除,结果为 NaN。
Infinity 被任何数字除,结果为 Infinity。
0 除一个任何非无穷大的数字,结果为 NaN。
Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity。
注释:如果运算数是数字,那么执行常规的除法运算,即两个正数或两个负数为正数,两个运算数符号不同,结果为负数。
3. 取模运算符
除法(余数)运算符由百分号(%)表示
如果被除数是 Infinity,或除数是 0,结果为 NaN。
Infinity 被 Infinity 除,结果为 NaN。
如果除数是无穷大的数,结果为被除数。
如果被除数为 0,结果为 0。
注释:如果运算数是数字,那么执行常规的算术除法运算,返回除法运算得到的余数。

  • 加性运算符

1.加法运算符
法运算符由加号(+)表示
与乘性运算符一样,在处理特殊值时,ECMAScript 中的加法也有一些特殊行为:
某个运算数是 NaN,那么结果为 NaN。
-Infinity 加 -Infinity,结果为 -Infinity。
Infinity 加 -Infinity,结果为 NaN。
+0 加 +0,结果为 +0。
-0 加 +0,结果为 +0。
-0 加 -0,结果为 -0。
不过,如果某个运算数是字符串,那么采用下列规则:
如果两个运算数都是字符串,把第二个字符串连接到第一个上。
如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。
** 2. 减法运算符**
减法运算符(-)

  • 关系运算符

** 常规比较方式**
关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同

  • 等性运算符

等号和不等号
在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。
执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:

值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
重要提示:即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。

  • 条件运算符 ( a = b1 ?b2)
  • 赋值运算符 (=)
  • 逗号运算符(,)

ECMAScript 语句

  • if语句

if ( i > 0 ){
alert(“i大于0);
}else{
alert(“i小于等于0)
}
  • 迭代语句

var i = 0;
do {
  i += 1;
} while (i < 10);
var i = 0;
while (i < 10) {
  i += 1;
}
for (var i = 0; i < 10; i++) {
  alert(i);
}
for (sProp in window) {
  alert(sProp);
}
  • 标签语句

start : i = 5;
  • break和continue语句

var iNum = 0;

for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    `break;`
  }
  iNum++;
}
alert(iNum);    //输出 "4"
var iNum = 0;

for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    `continue;`
  }
  iNum++;
}
alert(iNum);    //输出 "8"

break 语句和 continue 语句都可以与有标签的语句联合使用,返回代码中的特定位置。
通常,当循环内部还有循环时,会这样做,例如:

var iNum = 0;

outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    `break outermost;`
  }
  iNum++;
  }
}

alert(iNum);    //输出 "55"
  • with语句

var sMessage = "hello";
with(sMessage) {
  alert(toUpperCase());    //输出 "HELLO"
}
  • switch语句

switch (_expression_)
  case _value_: _statement_;
    break;
  case _value_: _statement_;
    break;
  case _value_: _statement_;
    break;
  case _value_: _statement_;
    break;
...
  case _value_: _statement_;
    break;
  default: _statement_;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值