关键字

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

下面是一些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. ConcurrentHashMap 并发之美

    一.前言 她如暴风雨中的一叶扁舟,在高并发的大风大浪下疾驰而过,眼看就要被湮灭,却又在绝境中绝处逢生 编写一套即稳定.高效.且支持并发的代码,不说难如登天,却也绝非易事. 一直有小伙伴向我咨询关于Co ...

  2. springboot 不同环境读取不同配置

    1. 3个配置文件(更多环境可以建多个): application.properties  (公共配置文件) application-dev.properties  (开发环境) applicatio ...

  3. Nebula Exchange 工具 Hive 数据导入的踩坑之旅

    摘要:本文由社区用户 xrfinbj 贡献,主要介绍 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 的流程及相关的注意事项. 1 背景 公司内部有使用图数据库的场景,内 ...

  4. ICPC Central Russia Regional Contest (CRRC 19)题解

    题目连接:https://codeforces.com/gym/102780 寒假第二次训练赛,(某菜依旧是4个小时后咕咕咕),战况还行,个人表现极差(高级演员) A:Green tea 暴力枚举即可 ...

  5. C#扫盲篇(四):.NET Core 的异步编程-只讲干货(async,await,Task)

    关于async,await,task的用法和解释这里就不要说明了,网上一查一大堆.至于为啥还要写这篇文章,主要是其他文章水分太多,不适合新手学习和理解.以下内容纯属个人理解,如果有误,请高手指正.本文 ...

  6. UnityToLaya小插件-找出空格并替换

    unity导出的文件中经常会出现带有空格的节点或者文件夹 而这些空格在本地开发测试过程中不会出现,当这些带有空格路径的文件需要放到网络上时,就出现问题了 所以这里写了一个简单的查找并清理空格的插件, ...

  7. 串口使用Pipeline时诡异的ReadOnlySequence问题

    借鉴之前的Pipeline的操作方式,现在目标是给串口读取操作也使用上Pipeline.稍微改造一下,以下代码可以直接运行. 协议为使用连续的4个0XFF作为结尾,没有头标志.数据总长为68位定长. ...

  8. P2327 [SCOI2005]扫雷(递推)

    题目链接: https://www.luogu.org/problemnew/show/P2327 题目描述 相信大家都玩过扫雷的游戏.那是在一个$n*m$的矩阵里面有一些雷,要你根据一些信息找出雷来 ...

  9. mysql—group_concat函数

    MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Or ...

  10. AVA编程中button按钮,actionlistener和mouseClicked区别

    在java的编程中,对于按钮button 有两个事件: 1.actionPerformed 2.mouseClicked 区别: actionPerformed:一般事件,仅侦听鼠标左键的单击事件,右 ...