基本语法,你不驾驭的

By admin in 4858美高梅 on 2019年3月27日

0.0  如有何漏洞只怕失实,请各位大神指引以当下校对。。

除此而外尊重( 震精 (○´・д・)ノ
)的叙说保留字,还会说某个侧面知识。

JS中对变量的称号(标示符)有如何供给:

  1. 首先个字符,可以是任意Unicode字母(包涵英文字母和任何语言的假名),以及日币符号($)和下划线(_)。
  2. 其次个字符及末端的字符,除了Unicode字母、澳元符号和下划线,仍可以用数字0-9。
  3. 区分轻重缓急写

来自《JavaScript
标准参照教程(阿尔法)》,by
阮一峰

运用严厉形式

一 、保留字的归类:

  先是笼统的说一下有何样保留字,保留字的话遵照犀牛书的撤销合并,可有分为以下几类:

  ① :基本功保留字: 那类保留字是最常用也是最常用到的,如:for、belete、void 等。

  ②
严酷方式下的保留字:那类保留字会在您使用严厉情势下列为保留字,如:let 、protected 等。

  ③ :严峻形式下的不完全保留字: 如:arguments、eval ;

  ④ :ECMAScript3的保留字:要是你指望你的代码运行在基于ECMAScript
3 的解析器上,那么您应有了然一下。

  ⑤ :ECMAScipt 5 的保留字:class、const 等

  ⑥ :全局变量和函数
那类放在保留字,主倘若为着防止污染,应该制止以她们的名字定义变量名和函数名,如:
Function、encodeU昂CoraL 等。

 

JS 中的数据类型

  1. 数值(number):整数和小数(比如1和3.14)
  • 在JS里面全体品种都以小数,不设有整数。
  • python里面装有都以整数
  1. 字符串(string):字符组成的文件(比如”Hello World”)

    • 字符串是单引号只怕双引号括起来的
    • 字符串里假诺有字符串要利用引号就在引号前边加上\
    • JS里字符串中间不可能有回车。
    • 假设字符串里必供给有回车能够利用\n代表回车
  2. 布尔值(boolean):true(真)和false(假)三个特定值
    例:

    var pressed = true// 打开开关
    pressed = false// 关闭开关
    
  3. undefined:表示“未定义”或不设有,即由于近年来不曾定义,所以这里一时半刻没有其余值

    • undefined不是3个根本字也不是三个保留字
    • 对undefined可以赋值不会报错但不会卓有效能
    • 当你声澳优(Ausnutria Hyproca)个变量,来检查和测试那么些变量就会展现undefined
    • 当2个未曾注脚的变量 alert(检查和测试) 之后会报错
    • 假若想要检查和测试不报错 就用alert(window.xx)
  4. null:表示无值,即此处的值正是“无”的境况。
    除了那么些之外一个变量暗中同意是undefined不是null之外,null跟undefined完全等同

  5. 指标(object):各类值组成的集聚

    • 两个以上的相继包起来正是对象
    • 对象里面是还是能有对象的
    • 重点字是能够用来做属性名的
  6. symbol: ( 在 ECMAScript 6
    中新拉长的品种).。一种数据类型,它的实例是绝无仅有且不得变更的。

1.语句

JavaScript程序的推行单位为行(line),也等于单排一行地进行。一般情形下,每一行正是一个言辞。

言辞(statement)是为着形成某种职分而展开的操作,比如上面正是单排赋值语句:
var a = 1 + 3;
这条语句先用var命令,证明了变量a,然后将1 + 3的演算结果赋值给变量a。
1 +
3叫做表明式(expression),指壹个为了获得重临值的总括式。语句和表明式的分裂在于,前者重要为了进行某种操作,一般景色下不需求重返值;后者则是为了拿走重临值,一定会再次回到二个值。
注意:表明式不须求分号结尾。一旦在表明式后边添加分号,则JavaScript引擎就将表明式视为语句,那样会爆发部分未曾别的意义的口舌。

定义

抱有作用域特点

  • 全局

"use strict";
...

-局部

(function(){
  "use strict";
  ...
})();

② 、基础保留字:

    全部的基本功保留字:

    break ; delete ; function ; return
; typeof ; case ; do ; if ; switch ; var ; catch ; else ; in ; this ;
void ; continue ; false ; true ; instanceof ; throw ; while ;
debugger;

    finally ; new ; with ; default ;
for ; null ; try ;

 

  1. 大家先来说说循环类的 for /
switch / case / default / while / do / continue / break ;

    ——
三大基础循环相信我们皆以有询问的,那里就只做不难的叙述,缺少幼功的同室可以先去
W3school
看看;

  

  – 首先简述一下switch / case / default
那多个

   

4858美高梅 14858美高梅 2

 1 var n;
 2     switch (n) {
 3         case 2: // ==> if ( n === 2 )
 4             console.log(1)
 5         break;
 6         case '2':
 7             console.log(2)
 8         break;
 9         default:
10         console.log('n与上面case的值都不相等时执行 default 内的代码块')
11     }

switch 基础

  简单的讲,你只要把 switch (n) 内的值 n 和 case m 后的值 m 当成是 if () 内执行 n===m 就便于领悟了,所以:

var n = '2';
    switch (n) {
        case 2:
            console.log(1)
        break;
        case '2':
            console.log(2)
        break;
        default:  // 传说中的替补队员,存在break的情况下,只有前面都不为真时会触发。
        console.log('n与上面case的值都不相等时执行 default 内的代码块')
    }
// 上面的代码输出的会是->  2 ;

  值得一说醒一下新妇的是,假使不添加 break 语句的话,switch
会继续执行至全数循环甘休。例如:

var n = '2';
    switch (n) {
        case 2: // ==> if ( n === 2 )
            console.log(1)
        case '2':
            console.log(2)
        default:
        console.log('我被执行了')
    }
// 输出->  2
// 以及输出-> 我被执行了

 

   – 来,大家加速步伐,看看 for / for
in 语句:

 

// 平常我们写 for 循环 
    for (var i=0; i<5; i++) {
        console.log(i)
    }
// 依次输出 0 1 2 3 4

// 也可以写成这样
    var i=0,len=5;
    for (; i<len ;) {
        console.log(i)
        i++
    }
// 输出结果是一样的 0 1 2 3 4

// for in 循环
    var data={a=1},x;
    for (x in data) {
        console.log( x )  // a 属性名
        console.log( data[x] )   // 1 属性值
    }

 

  –  while / do while 语句:

// while - 当指定的条件为 true 时循环指定的代码块

    var i = 0;
    while (i<3) {   // 如果条件为真,那就继续执行
        console.log(i);
        i++;
    }
// 输出 0 1 2
// 值得注意的是,如果你忘记增加条件中所用变量的值,该循环永远不会结束。该可能导致浏览器崩溃

// do/while 循环
    var i = 3;
    do {
        console.log(i);
        i++;
    }
    while (i<3);
// 输出 3 
// 无论条件是否为真,都先执行一边do内的代码块

 

  – 接下去相比有意思,大家说说跳出循环的两种保留字(break / continue)和怎么给循环命名。

// 跳出循环
// break 语句用于跳出循环。  // 跳出整个循环.
// continue 用于跳过循环中的一个迭代。 // 跳出当前次循环,进入下一个循环。
例如:--break
    for (var i=0; i<5; i++) {
        if(i == 1){
            break;
        }
        console.log(i)
    }
//   输出 0

--continue
    for (var i=0; i<5; i++) {
        if(i == 1){
            continue;
        }
        console.log(i)
    }
// 输出 0 2 3 4 

  并且大家可以给循环命名,让
continue 恐怕 break 跳出内定循环,例如:

var text = "";
var i, j;  // => var i; var j
Loop1: // 第一个循环标签 "Loop1"
for (i = 0; i < 3; i++) {
text += "i = " + i + ", j = ";

    Loop2: // 第二个循环标签 "Loop2"
    for (j = 10; j < 15; j++) {
        if (j == 12) {
            break Loop1;
        }
        console.log( text += j + " " );
    }
}

// 第一次输出   i = 0, j = 10 
// 第二次输出   i = 0, j = 10 11     

  那里大家给第1个循环定义了一个名字,叫 Loop1
,注意,那里给循环定义的名字和 var 定义变量丝毫不争持,例如:

var Loop1 = 999;
Loop1 : for (var i = 0; i < 3; i++) {
    console.log(Loop1)
}

// 定义了Loop1,输出的会是三次999;

但是如果不定义变量Loop1,将会抛出错误,只要break和continue可以使用

Loop1 : for (var i = 0; i < 3; i++) {
    console.log(Loop1)
}

// Loop1 is not defined

  !!!注意的是,continue只可以用于循环,不过大家的break可不止那个,还是能够跳出代码块,例如:(给某一块代码命名)

cars=["BMW","Volvo","Saab","Ford"];

list: {
    console.log( cars[0] );    // BMW
    console.log( cars[1] );    // Volvo
    console.log( cars[2] );    // Saab
    break list; // 跳出list标签-代码块
    console.log( cars[3] );
    console.log( cars[4] );
    console.log( cars[5] );
}
console.log(list)    // list is not defined
console.log(typeof list) // undefiled

  用法是大家得以应用名字xxx:{}去定义一整个代码块,当规则方便的时候跳出,注意,list
不是变量,你在前后定义多个同名变量并不会将之覆盖,未来的写法只是概念了

花括号内的这一块代码块的名字而已。

 

  睡觉觉~~~下一节说一说 in
操作符,预先报告:

  in 语句分单独选拔和for-in循环中动用,在单身采用时, in
操作符会在经过对象能够访问给定属性时重临 true
,无论该属性存在于实例中还是原型中。

  

var mycar = {make: "Honda", model: "Accord", year: 1998};
console.log("make" in mycar)  // 返回true
console.log("model" in mycar) // 返回true
console.log("Honda" in mycar) // 返回false 不是属性名

 

 

a !== “a”(a不等于a)

2.变量

变量是对“值”的引用,使用变量等同于引用一个值。每3个变量都有二个变量名。
var a; a = 1;为变量的宣示和赋值
var a; a // undefined假诺只是声称变量而从不赋值,则该变量的值是undefined,表示“无定义”。
var a = 1;
a = 1;而是,不写var的做法,不便利发挥意图,而且不难不知不觉地开创全局变量,所以提议总是选取var命令注解变量。ps:var
a = 1 与 a = 1的距离主要反映在delete命令不可能删除前者。
x // ReferenceError: x is not defined只要三个变量没有评释就间接运用,JavaScript会报错,告诉您变量未定义。
var x = 1; var x; x // 1设若变量x注解了三次,那么第3回申明是对事情没有什么益处的。
var x = 1; var x = 2;基本语法,你不驾驭的。 =
var x = 1; var x; x = 2;而是,假如第3次表明的同时还赋值了,则会覆盖掉前边的值。

<b>变量进步:</b>var的吩咐评释,无论在哪,都会升级到代码的头顶首先运营

规定

概念变量必须用 var
属性名、参数名 无法重名
剥夺八进制表示数字,整数的率先位借使是0,表示这是八进制数
无法去除变量 delete
保留字无法用作标识符
明确命令禁用with语句
创设eval作用域
取缔this关键字指向全局对象
不准在函数内部遍历调用栈
函数必须注解在顶层

那边能够推荐大家阅读下阮老师的博文
阮一峰 – Javascript
严苛格局详解

b !== “b”(b不等于b)

3.标识符

标识符命名规则如下:

第一个字符,能够是任意Unicode字母(包含英文字母和任何语言的字母),以及卢比符号($)和下划线(_)。
其次个字符及末端的字符,除了Unicode字母、法郎符号和下划线,还是能用数字0-9。

ps:中文是合法的标识符,能够视作变量名。

JavaScript有一部分保留字,不可能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

不建议视作标识符的:Infinity、NaN、undefined

注释

  • 单行用 \

  • 多行用

/* … */

/*


*/

说明式和言辞

言语是为了做3个事务
表达式去求1个值(有值的都以表达式)

4.准绳语句

标准语句提供一种语法构造,唯有满足某些条件,才会履行相应的语句。JavaScript提供if结构和switch结构,完结标准化判断。

语句

一行壹个讲话
子集团结尾
大括号表示代码段

JS中的NaN

NaN(Not a
Number,非数)是电脑科学中数值数据类型的一类值,表示未定义或不足表示的值。

  • NaN 属性的伊始值正是 NaN,和 Number.NaN
    的值一样。在现代浏览器中(ES5中), NaN
    属性是三个不行配置(non-configurable),不可写(non-writable)的习性。但在ES3中,那脾特性的值是能够被更改的,可是也相应幸免覆盖。
  • 在编码很少直接使用到 NaN。日常都是在盘算失败时,作为 Math
    的某些方法的重返值出现的(例如:Math.sqrt(-1))只怕尝试将二个字符串解析成数字但全盘皆输了的时候(例如:parseInt(“blabla”))。
    数据类型为:number

4.1 if 结构

if (expression表达式){
  statement语句;
}

留神,if后边的表明式,不要混淆“赋值表明式”(=)与“严谨相等运算符”(===)或“相等运算符”(==)。因为,“赋值表明式”不抱有相比较效益。

关键字&保留字

  • 参考 ECMA-262 中定义

JS中怎么样是常量

常量Constant:不变的值。【IE不辅助const】
常量:就是不可变的量
const证明常量

  1. const constantName = value1;
    常量名首字符为字母或下划线,其后可有数字。 value1为间接量或表明式。
  2. 叁个const关键字可定义3个或多少个常量。
  3. 置于常量:JS中Infinity表无穷大的数值,-indinity表无穷小。NaN表非数值。

4.2 if…else结构

if (m === 3) {
  // then
} else {
  // else
}

上边代码判断变量m是不是等于3,假设等于就进行if代码块,不然执行else代码块。

数据类型

JS中怎么着是变量

从字面上看,变量是可变的量;从编程角度讲,变量是用以存款和储蓄某种/有些数值的存款和储蓄器。
var注明变量
变量名能够自由取名,但要服从命名规则:

  1. 变量必须使用假名、下划线(_)或然台币符($)开头。
  2. 接下来能够动用任意多个英文字母、数字、下划线(_)大概澳元符($)组成。
  3. 不能够利用JavaScript关键词与JavaScript保留字

变量进步:函数注解和变量注解总是会被解释器悄悄地”进步”到方法体的最顶部。
例:

alert(xxx)
var xxx
//等同于
var xxx
alert(xxx)

注意:

  • 在JS中差异学轻工重缓急写,如变量mychar与myChar是不同的,表示是五个变量。
  • 变量尽管也足以不注明,直接运用,但不规范,要求先评释,后使用。
    变量Variable:一种独特的标识符(identifier)。存款和储蓄新闻(值或表达式)的器皿。
    【与常量Constant相比较,变量存款和储蓄的数目,可根据程序供给而改变;JS中的变量为notype,及弱类型】
  • 取名规则:由Unicode字符串和数字构成。首字符为:字母、下划线、英镑符号$。其后的还可用数字。
  • 变量生存期(有效限制):全局(global)变量、本地(local)变量。【变量没有语句块限制】
    前者用于全数文书档案中JS代码运营甘休止。后者用于函数及其嵌套的子函数中、但无法用于父级或其余函数。

4.3 switch结构

switch (fruit) {
  case "banana":
    // ...
    break;
  case "apple":
    // ...
    break;
  default:
    // ...
}

上边代码根据变量fruit的值,选拔执行相应的case。假若全部case都不切合,则执行最后的default部分。<b>供给专注的是</b>,每一种case代码块内部的break语句不可能少,不然会接下去执行下贰个case代码块,而不是跳出switch结构。

变量

  • 弱类型 能够互相转换
  • 性能 包存值的占位符
  • 定义 用var来声明

规格语句

规则语句提供一种语法构造,唯有满足某些条件,才会实施相应的说话。JavaScript提供if结构和switch结构,完结标准判断。

4. 3安慕希运算符 ?:

JavaScript还有1个长富运算符(即该运算符要求八个运算子)?:,也得以用来逻辑判断。

(condition) ? expr1 : expr2

地方代码中,假诺condition为true,则重临expr1的值,不然再次回到expr2的值。

数据类型分类

if 结构

if结构先判断三个表达式的布尔值,然后依据布尔值的真假,执行差别的语句。

if (m === 3)
  m += 1;
}

上面代码表示,只有在m等于3时,才会将其值加上1。
建议总是在if语句中利用大括号,因为这么便于插入语句。

if前面包车型客车表达式,不要混淆“赋值表明式”(=)与“严刻相等运算符”(===)或“相等运算符”(==)。因为,“赋值表明式”不具有比较效益。

5.循环语句

循环语句用于重复执行有个别操作,它有各个格局。

不难易行数据类型

  • Undefined 没有对象
  • NULL 空指针
  • String

单引号 双引号 完全相同
都可以转义 反斜杠 \ ,换行 \n
全部代码上下文统一

  • Number

Number.MAX_VALUE
Number.MIN_VALUE

反省是还是不是能代表
isFinite(13213213)

var n = 1e

NaN 违规数字
isNaN(‘aaa’) 是还是不是违法数字
true
Number(‘1231’) 数字转换

e 是科学计数法
var y=123e5; // 12300000
var z=123e-5; // 0.00123

parseInt 转整形
parseFloat 转浮点

  • Boolean

if…else结构

1,花括号能够简简单单,不过提出不要简单
2,JS 里唯有五个值是假的:false 0 ” NaN undefiend null
3,能够缩写七个分支逻辑

if代码块前面,仍可以够跟二个else代码块,表示不满意条件时,所要执行的代码。

if (m === 3) {
// then
} else {
// else
}

上边代码判断变量m是不是等于3,假诺等于就推行if代码块,否则执行else代码块。

对同二个变量进行反复判断时,多少个if…else语句能够连写在协同。

if (m === 0) {
// ...
} else if (m === 1) {
// ...
} else if (m === 2) {
// ...
} else {
// ...
}

else代码块总是跟随离自个儿多年来的可怜if语句。

5.1 while循环

While语句包涵三个循环条件和一段代码块,只要条件为真,就没完没了循环执行代码块。

while (expression表达式){
  statement语句;
}

复杂数据类型

  • Object

代表值或函数方法
无序

var objs = new Object();
Object {}

var objs = {};

switch结构

三个if…else连在一起使用的时候,能够转为接纳更便宜的switch结构。

switch (fruit) {
  case "banana":
    // ...
    break;
  case "apple":
    // ...
    break;
  default:
    // ...
}

地点代码依据变量fruit的值,选拔执行相应的case。假设拥有case都不相符,则履行最后的default部分。要求小心的是,每种case代码块内部的break语句不可能少,不然会接下去执行下一个case代码块,而不是跳出switch结构。

var x = 1;

switch (x) {
  case 1:
    console.log('x 于1');
  case 2:
    console.log('x 等于2');
  default:
    console.log('x 等于其他值');
}
// x等于1
// x等于2
// x等于其他值

地方代码中,case代码块之中没有break语句,导致不会跳出switch结构,而会直接推行下去。

switch语句部分和case语句部分,都得以使用表明式。
须求注意的是,switch语句后边的表达式与case语句前面包车型大巴表示式,在可比运维结果时,采纳的是严俊相等运算符(===),而不是十三分运算符(==),那意味着比较时不会爆发类型转换。

5.2 for循环

for语句是循环命令的另一种样式,能够钦命循环的起源、终点和终止条件。它的格式如下。

for (initialize; test; increment) {
  statement
}

for语句后边的括号里面,有两个表达式。

  • 开端化表明式(initialize):分明循环的开首值,只在循环起来时实施二遍。
  • 测试表明式(test):检查循环条件,只要为真就展开继续操作。
  • 递增表明式(increment):达成后续操作,然后回来上一步,再1回检查循环条件。

例子:

var x = 3;
for (var i = 0; i < x; i++) {
  console.log(i);
}
// 0
// 1
// 2

地点代码中,初阶化表明式是var i = 0,即开始化三个变量i;测试表明式是i
<
x,即只要i小于x,就会履行循环;递增表明式是i++,即每便循环截至后,i增大1。

相当于while的:

var x = 3;
var i = 0;

while (i < x) {
  console.log(i);
  i++;
}

typeof

var a = 1e5
typeof(a)
“number”

安慕希运算符 ?:

JavaScript还有2个长富运算符(即该运算符要求八个运算子)?:,也能够用来逻辑判断。

(condition) ? expr1 : expr2

下边代码中,要是condition为true,则重返expr1的值,不然重返expr2的值。
诚如写法:

var even;
if (n % 2 === 0) {
  even = true;
} else {
  even = false;
 }

元正运算符写法:

var even = (n % 2 === 0) ? true : false;

地方代码中,假若n能够被2整除,则even等于true,不然等于false。它一律上边包车型大巴款型。

5.3 do…while循环

do…while循环与while循环类似,唯一的区分就是先运营3回循环体,然后判断循环条件。

do {
  statement
} while (expression);

操作符

循环语句

4858美高梅,循环语句用于重复执行有些操作,它有四种情势。
算法:
1,必须有可执行性
2,有限步骤
3,结果是可判断的

5.4 break语句和continue语句

break语句 用于跳出代码块或循环。
continue语句 用于当下结束本轮循环,重返循环结构的尾部,早先下一轮循环。

一元操作符

++ —
放到 先总结和赋值一起操作
前置 计算后再赋值

int n = 1
++n
2
n++
2
n
3

while循环

While语句包涵一个循环条件和一段代码块,只要条件为真,就不止循环执行代码块。

while (expression)
  statement;

// 或者

while (expression) statement;

while语句的轮回条件是二个表明式(express),必须放在圆括号中。代码块部分,若是唯有一条语句(statement),能够简单大括号,不然就必须抬高大括号。

var i = 0;

while (i < 100) {
  console.log('i当前为:' + i);
  i += 1;
}

地点的代码将循环九十八遍,直到i等于100了却。
上边包车型地铁例证是多个最佳循环,因为口径总是为真。

while (true) {
  console.log('Hello, world');
}

位操作符

for循环

for语句是循环命令的另一种样式,能够内定循环的源点、终点和停止条件。它的格式如下。

for (initialize; test; increment)
  statement

// 或者

for (initialize; test; increment) {
  statement
}

for语句后边的括号里面,有多个表达式。

起先化表明式(initialize):分明循环的早先值,只在循环起来时实施三遍。
测试表达式(test):检查循环条件,只要为真就实行继续操作。
递增表明式(increment):完毕后续操作,然后再次回到上一步,再三回检查循环条件。

var x = 3;
for (var i = 0; i < x; i++) {
  console.log(i);
}
// 0
// 1
// 2

上边代码中,开端化表达式是var i = 0,即初步化二个变量i;测试表明式是i
<
x,即假设i小于x,就会实施循环;递增表明式是i++,即每一次循环甘休后,i增大1。

怀有for循环,都足以改写成while循环。下边包车型地铁事例改为while循环,代码如下。

var x = 3;
var i = 0;

while (i < x) {
  console.log(i);
  i++;
}

for语句的多个部分(initialize,test,increment),能够简不难单任何三个,也得以整个粗略。

for ( ; ; ){
  console.log('Hello World');
}

布尔操作符

与 或 非

alert(1&&2)的结果是2
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

alert(0||1)的结果是1
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

do…while循环

do…while循环与while循环类似,唯一的差距正是先运转三遍循环体,然后判断循环条件。

do
  statement
while (expression);

// 或者

do {
  statement
} while (expression);

不论是条件是不是为真,do..while循环至少运行三次,那是那种布局最大的特点。此外,while语句前边的分店无法简单。

四则运算操作符

加、减、乘、除、求模

break语句和continue语句

break语句和continue语句都具备跳转成效,能够让代码不按既有的顺序执行。

break语句用于跳出代码块或循环。

var i = 0;

while(i < 100) {
  console.log('i当前为:' + i);
  i++;
  if (i === 10) break;
}

上边代码只会执行拾3遍巡回,一旦i等于10,就会跳出循环。

for循环也足以行使break语句跳出循环。

for (var i = 0; i < 5; i++) {
  console.log(i);
  if (i === 3)
    break;
}
// 0
// 1
// 2
// 3

地点代码执行到i等于3,就会跳出循环。

continue语句用于马上停下本轮循环,重返循环结构的头顶,初始下一轮循环。

var i = 0;

while (i < 100){
  i++;
  if (i%2 === 0) continue;
  console.log('i当前为:' + i);
}

地点代码唯有在i为奇数时,才会输出i的值。假若i为偶数,则直接进入下一轮循环。

借使存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

事关操作符

大于 等于 不等于 等于
全等于 === 会相比类型
全不等 !==

标签(label)

JavaScript语言允许,语句的先头有标签(label),相当于定位符,用于跳转到程序的自由地点,标签的格式如下。

label:
  statement

标签可以是私自的标识符,不过无法是保留字,语句部分能够是不管三七二十一语句。

标签平常与break语句和continue语句协作使用,跳出特定的轮回。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

地点代码为2个再次循环区块,break命令后边加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。假如break语句后边不应用标签,则只可以跳出内层循环,进入下一次的外层循环。

continue语句也足以与标签合作使用。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) continue top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2

地方代码中,continue命令前面有一个标签名,满意条件时,会跳过当前轮回,直接进去下一轮外层循环。即便continue语句后边不使用标签,则只好进入下一轮的内层循环。

基准操作符

var a = (a>b ? a : b)

赋值操作符

=
+= -= *= /= %=
位运算 <<= 、>>= 、>>>=

逗号操作符

var a = 1, b = 2, c= 3

语句

条件

if(){}else{}else if{}

循环

while(true){}
do{}while(true)
for(var i =0;i<=numMax;i++){}
for(var key in 对象或数组){}

分支

switch(表明式、变量或值){ case 值或说明式: … break; }

break 与 continue

with语句

with(req.session.user){
  log(name,sex);
}

label语句

var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
    for (j = 0; j < tests.length; j++)
        if (!tests[j].pass(items[i]))
            continue top;
        itemsPassed++;
}

函数

定义

function sum(a,b){
  console.log('sum : ', a+b);
}

var sum2 = new Function(
  'a',
  'b',
  'console.log('sum : ', a+b);'
);

var sum3 = function(a,b){
  console.log('sum : ', a+b);
};

暗许再次回到值

Undefined

保留字 arguments

function testArg(){
  console.log('arguments: ', arguments);
}

testArg(1,2,3,4,5);

参数个数

sum.length
2

特性

匿名
回调

变量

定义

var 格局是有的
暗许是全局(不推荐)

ECMAScript 引用类型

Object 类型

var obj = {name:'aaa'}
obj.name
obj['name']

着力包装档次

主导项目自带的措施
如 String.toString()

Global 对象

属性
infinity nan undefined null

方法
eval() isFinite() isNan() …

Math 对象

数学对象
Math.PI Math.E Math.SQRT2 Math.SQRT1_2 Math.min() Math.max()
Math.random()

数组

初始

var arr = new Array(3);
var arr = new Array('a', 'b', false);
var arr[4] = 'ab';

检查

arr instanceof Array
Array.isArray(arr)

转换与排序

var obj = {a:1, b:2, c:3, d:false};
Object.keys(obj);
Object.keys(obj).length;

// 分割
var str = 'a b c d';
str.split(' ');

// 打印
str.toString();
a,b,c,d
str.join('|');
a|b|c|d

// 排序
var arr = [11,2,33,66,55];
function compareAB(a,b){
  if(a > b){
    return 1;
  } else if(a === b){
    return 0;
  }else if(a < b){
    return -1;
  }
}
arr.sort(compareAB);
console.log(arr);

栈和队列操作

// 压入,加在尾端
arr.push(100,101);
// 弹出,尾端出栈
arr.pop();

// 队列,头部弹出
arr.shift();
// 队列,头部压入
arr.unshift(222);

其它

// concat 连接另一个数组,加入尾端
var arr1 = ['a1','a2'];
arr.concat(arr1)

// slice 取出
arr.slice(2,5); // 从2位置取到5,取出3个

// splice 删除、插入
arr.splice(1,1); // 从1位置删除1个
arr.splice(1,0,'a3','a4'); // 从1的位置 删除0个 插入 a3 a4

// 定位
indexOf();// 头部开始
lastIndexOf();// 尾部开始

// 加工函数,需要传入自定义函数
// every() 所有的成员都返回true 才是 true
arr.every(function(m){
  return m > 10;
});

// some() 有一个是true 就是 true
arr.some(function(m){
  return m > 10;
});

//filter() 返回值为true的组成一个新数组
arr.filter(function(m){
  return m > 10;
});

//map() 对数据处理 返回新数组
arr.map(function(m){
  return m + 10;
});

//forEach() 数组循环遍历
arr.forEach(function(m){
  console.log(m);
});

// reduce() prev 是上次的return 结果
arr.reduce(function(prev, cur, index, arr){
  return prev + cur;
});

// reduceRight() 是反序列操作

本身的博客

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有