关键字

根据规定,关键字是保留的,不能用作变量名或函数名。

下面是一些ECMAScript关键字的完整列表。

break ,case,catch,continue,default,delete,do,else,finally.

for,function,if,iInstanceof,new,return,switch,this,throw.

try,typeof,var,void,while,with.


条件语句

  • 比较运算符

    比较运算符执行的是比较运算。每个比较运算符都返回一个布尔值。比较运算符在逻辑语句中使用,以测定变量或值是否相等。

== (等于) === (全等-值和类型) != (不等于)

(大于) < (小于) >= (大于或等于) <= (小于或等于)

  • 逻辑运算符

(1)逻辑运算符,用于测定变量或值之间的逻辑。

&& (and) || (or) ! (not)

(2)条件运算符

variablename=(condition)?value1:value2;

如果条件condition满足,则为value1,否则为value2。

(3)if语句

①if语句

if(条件){

只有当 条件为true时执行的代码

};

②if…else if…else语句

if(条件1)

{

当条件1为true时执行的代码

}

else if(条件2)

{

当条件2为true时执行的代码

}

else

{当条件1和条件2都不为true时执行的代码

};

(4)switch语句

switch语句是if语句的兄弟语句。

可以用switch语句为表达式提供一系列的分支情况(case)。

switch(expression)
case value:statement;
break;
case value:statement;
break;
case value:statement;
break;
default:statement; ---------- ###**循环语句**
(1)while语句

while(表达式)

{

语句;

}

(2)do...while语句

```do
{
语句;
}while(表达式); <div class="se-preview-section-delimiter"></div>

do…while为不确定性循环,先执行大括号中的语句,当表达式的结果为真(true)时,执行循环中的语句;当表达式为假(false)不执行循环,并退出do…while循环。

(3)for语句

for(初始化表达式;判断表达式;循环表达式)
{
语句;
} <div class="se-preview-section-delimiter"></div>

先执行“初始化表达式”,再根据“判断表达式”的结果判断是否执行循环,当判断表达式为真(true)时,执行循环中的语句,最后执行“循环表达式”,并继续返回循环的开始进行新一轮循环;表达式为假(false)时不执行循环,并退出for循环。

(4)break和continue语句

①break与continue说明

break可以跳出switch…case语句,继续执行switch语句后面的内容。break语句还可以跳出循环,也就是结束循环语句的执行。continue语句的作用为结束本次循环,接着进行下一次是否执行循环的判断。

②break和continue的本质区别

continue与break的区别是:break是彻底结束循环,而continue是结束本次循环。

(5)for…in语句

for…in语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。for…in中的代码每执行一次就会对数组的元素或者对象的属性进行一次操作。

for(变量in对象)
{
在此执行代码
}; “变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。 ---------- <div class="se-preview-section-delimiter"></div> ##**函数** > 函数是一组可以随时随地运行的语句,简单的说,函数是完成某个功能的一组语句,它接收0个或者多个参数,然后执行函数体来完成某个功能,最后根据需要返回不返回处理结果。 (1)定义和调用函数 > 函数是可以重复使用的代码块,可以由一个事件执行,或被调用执行。函数是ECMAJavascript的核心。
> 函数是由这样的方式进行声明的:关键字function、函数名、一组参数,以及置于花括号中的待执行代码。 基本语法`
function functionName(arg0,arg1,...argN){
statements
};`
如何调用函数 > 通过其名字加上括号中的参数进行调用。 函数如何返回参数值 > 函数只需要使用return后跟要返回的值即可。
> 如果函数无返回值,那么可以调用没有参数的return,随时退出函数。 (2)用arguments对象访问函数的参数 > Javascript函数并没有严格要求哪些参数是必选参数,哪些参数是可选参数,因此传入的参数个数是允许不等于定义函数时参数的个数的。如果在函数中使用了未定义的参数,则会提示语法错误(参数未定义),Javascript代码不会正常运行,如果参数已经定义,但未正确地传入,相关参数值会以undefined替换,Javascript代码仍正常运行。 <hr/> <div class="se-preview-section-delimiter"></div> ###函数对象 **因为函数是对象,所以它们可以像任何其他的值一样被使用。函数可以保存在变量、对象和数组中。函数可以被当做参数传递给其他函数,函数也可以再返回函数。而且,因为函数是对象,所以函数可以拥有方法。** **函数的与众不同在于它们可以被调用。** <div class="se-preview-section-delimiter"></div> ###函数字面量 函数对象通过函数字面量来创建 <div class="se-preview-section-delimiter"></div>

//创建一个名为add的变量,并用来把两个数字相加的函数赋值给它。

var add = function(a,b){

return a+b;

}


函数字面量包括4个部分。
**第1个部分是保留字function.**
**第2个部分是函数名,可悲省略。**
**函数的第3部分是包围在圆括号中的一组参数。**多个参数用逗号分隔,这些参数将被定义为函数中的变量。它们不像普通的变量那样将被初始化为undefined,而是在该函数被调用时初始化为实际提供的参数的值。
**第4部分是包围在花括号中的语句。这些语句是函数的主体。** 一个内部函数除了可以访问自己的参数和变量,同时它也能自由访问把它嵌套在其中的父函数的参数与变量。通过函数字面量创建的函数对象包含一个连接到外部上下文的连接。这被称为闭包。 <div class="se-preview-section-delimiter"></div> ###调用
调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数。 除了声明时定义的形式参数,每个函数还接收两个附加参数:this和arguments。参数this在面向对象编程非常重要,它的值取决于调用的模式。 **在JS中一共有4种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。**这些模式在如何初始化关键参数this上存在差异。 **调用运算符是跟在任何产生一个函数值的表达式之后的一对圆括号。** 圆括号内可含零个或多个用逗号隔开的表达式。每个表达式产生一个参数值。每个参数值被赋予函数声明时定义的形式参数名。当实际参数(arguments)的个数与形式参数(parameters)的个数不匹配时,不会导致运行时报错。如果实际参数值过多了,超出的参数值会被忽略。如果实际参数值过少,缺失的值会被替换为undefined。**对参数值不会进行类型检查:任何类型的值都可以被传递给任何参数。** <div class="se-preview-section-delimiter"></div> ###方法调用模式
**当一个函数被保存为对象的一个属性时,我们称它为一个方法。** 当一个方法被调用时,this被绑定到该对象。如果调用表达式包含一个提取属性的动作(即包含一个 . 点表达式或[subscript]下标表达式),那么它就是被当做一个方法来调用。 <div class="se-preview-section-delimiter"></div>

//创建myObject对象。它有一个value属性和一个increment方法。

//incre方法接受一个可选的参数。如果参数不是数字,那么默认使用数字1。

var myObject = {

value : 0,

increment : function(inc){

this.value +=typeof inc ===’number’ ? inc : 1;

}

};

myObject.increment();

document.writeln(myObject.value); // 1

myObject.increment(2);

document.writeln(myObject.value); // 3


方法可以使用this访问自己所属的对象,所以它能从对象中取值或对对象进行修改。 通过this可去的它们所属对象的上下文的方法称为公共方法。 <div class="se-preview-section-delimiter"></div> ###函数调用模式
当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的: <div class="se-preview-section-delimiter"></div>

var sum = add(3,4); // sum=7.


以此模式调用函数时,this被绑定到全局对象。 <div class="se-preview-section-delimiter"></div>

//给myObject增加一个double方法。

myObject.double = function() {

var that = this ;

var helper = function () {

that.value = add(that.value,that.value);

}

helper(); //以函数的形式调用helper。

};

//以方法的形式调用double

myObject.double();

document.writln(myObject.value); //6



<div class="se-preview-section-delimiter"></div>

###构造器调用模式

**JavaScript是一门基于原型继承的语言。**

这意味着对象可以直接从其他对象继承属性,该语言是无类型的。

如果在一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype成员的新对象,同时this会被绑定到那个新对象上。

new前缀也会改变return 语句的行为。

<div class="se-preview-section-delimiter"></div>

// 创建一个名为Quo的构造器函数.它构造一个带有status属性的对象。

var Quo = function (String){

this.status = string;

};

//给Qup的所有实例提供一个名为get_status的公共方法。

Quo.prototype.get_status = function () {

return this.status;

};

//构造一个Quo实例。

var myQuo = new Quo(“confused”);

document.writln(myQuo.get_status()); //打印显示“confused”


**一个函数,如果创建的目的就是希望结合new前缀来调用,那么它就被称为构造器函数。** <div class="se-preview-section-delimiter"></div> ###Apply调用模式 apply方法让我们构建一个参数数组传递给调用函数。它允许我们选择this的值。apply方法接收两个参数,第1个是要绑定给this的值,第2个就是一个参数数组。 <div class="se-preview-section-delimiter"></div>

//构造一个包含两个数字的数组,并将它们相加。

var array = [3,4];

var sum = add.apply(null,array); //sum=7;



<div class="se-preview-section-delimiter"></div>

###返回
当一个函数被调用时,它从第一个语句开始执行,并在遇到关闭函数的 } 时结束。 然后函数把控制权交还给调用该函数的程序。 return 语句可用来使函数提前返回。当return 被执行时,函数立即返回而不再执行余下的语句。 一个函数总是会返回一个值,如果没有指定返回值,则返回undefined。 如果函数调用时在前面加上了new前缀,且返回值不是一个对象,则返回this(该新对象)。 <div class="se-preview-section-delimiter"></div> ###异常 <div class="se-preview-section-delimiter"></div>

var add= function (a){

if(typeof a!== ‘number’ || typeof b!== ‘number’){

throw {

name:’TypeError’,

message:’add needs numbers’

};

}

return a+b;

}

throw 语句中断函数的执行。它应该抛出一个exceptionb对象,该对象包含一个用来识别异常类型的name属性和一个描述性的message属性。

该exception对象将被传递到一个try语句的catch从句:

<div class="se-preview-section-delimiter"></div>

//构造一个try_it函数,以不正确的方式调用之前的add函数。

var try_id = function () {

try{

add(“seven”);

}catch (e) {

document.writln(e.name+’:’+e.message);

}

}

try_it();

“`

先执行“初始化表达式”,再根据“判断表达式”的结果判断是否执行循环,当判断表达式为真(true)时,执行循环中的语句,最后执行“循环表达式”,并继续返回循环的开始进行新一轮循环;表达式为假(false)时不执行循环,并退出for循环。
(4)break和continue语句
①break与continue说明 > break可以跳出switch...case语句,继续执行switch语句后面的内容。break语句还可以跳出循环,也就是结束循环语句的执行。continue语句的作用为结束本次循环,接着进行下一次是否执行循环的判断。 ②break和continue的本质区别 > continue与break的区别是:break是彻底结束循环,而continue是结束本次循环。 (5)for...in语句
for...in语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。for...in中的代码每执行一次就会对数组的元素或者对象的属性进行一次操作。

for(变量in对象)

{

在此执行代码

};

“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。



//构造一个try_it函数,以不正确的方式调用之前的add函数。
var try_id = function () {
try{
add("seven");
}catch (e) {
document.writln(e.name+':'+e.message);
}
}
try_it();

作用域

var foo = function () {
var a = 3, b = 5; var bar = function(){
var b = 7, c = 11;
//此时,a为3,b为7,c为11
a +=b+c;
//此时,a为21,b为7,c为11
};
//此时,a为3,b为5,而c还没有定义。
bar();
//此时,a为21,b为5。
};

回调

函数使得不连续事件的处理变得更容易。

例如,假定有这么一个序列,由用户交互行为触发,向服务器发送请求,最终显示服务器的响应。

request = prepare_the_request ();
response = send_request_synchronously(request);
display(response);

这种方式的问题在于,网络上的同步请求将会导致客户端进入假死状态。

如果网络传输或服务器很慢,响应会慢到让人不可接受。

更好的方式是发起异步请求,提供一个当服务器的响应到达时随即触发的回调函数。异步函数立即返回,这样客户端就不会被阻塞。

request = prepare_the_request();
send_request_asynchronously(request,function (response){
display(response);
});

Javascript关键字,条件语句,函数及函数相关知识的更多相关文章

  1. JavaScript的条件语句

    JavaScript的条件语句 1.JavaScript的条件语句包括以下几个 (1)if - 只有当指定条件为true时,使用该语句来执行代码: (2)if...else - 当指定条件为true时 ...

  2. JavaScript if 条件语句

    JavaScript if 条件语句 使用: if(条件){ }else if(条件){ }else if(条件){ }else{ } 示例: // 判断相等 if(1==1){ } // 判断不等 ...

  3. JavaScript case 条件语句

    JavaScript case 条件语句 示例 switch(name){ case '1': age = 123; break; case '2' age = 456; break; default ...

  4. JavaScript之条件语句

    (1)if条件语句 // if(条件){当条件为真,存在即为真.当条件为false null 0 undefined中任意一种时,则表示不存在,不存在即为假} if(条件){ 条件为真时执行的代码 } ...

  5. javascript语句——条件语句、循环语句和跳转语句

    × 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...

  6. JavaScript(类型转换、条件语句、循环、函数)

    类型装换 转为数字类型 // Number console.log(Number(undefined)); //NaN console.log(Number(null)); //0 console.l ...

  7. 【译】写好JavaScript条件语句的5个技巧

    译文 当我们写JavaScript代码时,经常会用到到条件判断处理,这里有5个技巧能使你写出更好.更简洁的条件语句. 1.使用Array.includes处理多种条件 让我们来看一下的例子: // c ...

  8. 在用 JavaScript 工作时,我们经常和条件语句打交道,这里有5条让你写出更好/干净的条件语句的建议。

    1.多重判断时使用 Array.includes 2.更少的嵌套,尽早 return 3.使用默认参数和解构 4.倾向于遍历对象而不是 Switch 语句 5.对 所有/部分 判断使用 Array.e ...

  9. PHP变量、数据类型、字符串、运算符、条件语句、循环语句、数组、函数

    PHP 简介: php :是一门动态交互的计算机语言  静态交互 html  css  js 但凡是动态交互的 都需要服务器. php都是以.php结尾的文件 Html文件里不能写php代码,但是ph ...

随机推荐

  1. 在mac上使用vscode创建第一个C++项目

    https://blog.csdn.net/bujidexinq/article/details/106539523 准备工作:安装好vscode安装插件『C/C++』正式开始:首先是创建一个空的文件 ...

  2. 分析http协议和高并发网站架构

    案例任务名称 分析http协议和高并发网站架构 案例训练目标 深入理解http协议的工作原理 掌握http协议的分析方法 包含技能点 搭建web服务器 编辑简单的html页面并上传到服务器 使用wir ...

  3. Erlang那些事儿第3回之我是函数(fun),万物之源MFA

    Erlang代码到处都是模式匹配,这把屠龙刀可是Erlang的看家本领.独家绝学,之前在<Erlang那些事儿第1回之我是变量,一次赋值永不改变>文章提到过,Erlang一切皆是模式匹配. ...

  4. 「译」Blazor VS React React / Angular / Vue.js

    原文作者: Christian Findlay 原文链接: https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js ...

  5. .NET 云原生架构师训练营(模块二 基础巩固 消息队列 介绍与基础)--学习笔记

    2.6.1 消息队列 -- 介绍 主要使用场景 队列的三种形式 消息队列的优点 主要使用场景 典型的异步处理 流量削锋 应用解耦 队列的三种形式 点对点 工作队列 发布与订阅 消息队列的优点 1.屏蔽 ...

  6. JavaScript 内存详解 & 分析指南

    前言 JavaScript 诞生于 1995 年,最初被设计用于网页内的表单验证. 这些年来 JavaScript 成长飞速,生态圈日益壮大,成为了最受程序员欢迎的开发语言之一.并且现在的 JavaS ...

  7. Go语言从入门到放弃(四)

    前言 有段时间没摸Go语言了,最近B站的Go语言泄露挺火的. 还差的很远呐 学无止境 本章主要介绍一些零碎的小知识点 变更记录 # 19.4.30  起笔 # 19.4.30  增加代码打包步骤 正文 ...

  8. sublime python 去掉单行超出字数的白色框框 (E501)

    方法一 E501错误:行过长 (大于79个字符),在配置文件里设置 忽略E501错误即可 首选项-->Package Settings-->Anaconda-->Settings - ...

  9. 深入理解MySQL索引(上)

    简单来说,索引的出现就是为了提高数据查询的效率,就像字典的目录一样.如果你想快速找一个不认识的字,在不借助目录的情况下,那我估计你的找好长时间.索引其实就相当于目录. 几种常见的索引模型 索引的出现是 ...

  10. OpenID协议

    背景 当我们要使用一个网站的功能时,一般都需要注册想用的账号.现在的互联网应用很多,一段时间之后你会发现你注册了一堆账号密码,根本记不住. 你可能会想到所有的网站都用同一套用户名和密码,这样虽然能解决 ...