表达式与语句(Expression&Statement)

流程控制语句

1.嵌入式语句

嵌入式即这种语句可以无限嵌套N层。所有嵌入式语句只需要键入首个关键单词,在visual studio里按Tab键两次就会自动形成该语句的结构。

条件语句:if(x)

如果x表达式返回真就会执行if的代码块。

if变体

if(x)、if(z)、……

if可嵌套多个if,如果x表达式返回真就会执行if代码块所包含的其它if代码块。

if(x)、else

如果x表达式返回真就会执行if的代码块,否则执行else代码块。

if(x)、if(j)、else 、…… 、else……

表示可以在最外层(着色的是最外层)的条件语句块中嵌套多个分组的if、else(分组即if和else针对的条件是相反的被视为一组),如果x表达式返回真就会执行if的代码块,接着进入第二层的if代码块进行判断。如果x表达式返回假就不进入第二层,转而执行与该if是一组的else的代码块(着色),以此类推……

if(x) 、else if(z)、…… 、else……

表示可以有多个else if,如果x表达式返回真就会执行if的代码块,否则判断else if代码块,如果为真就执行它,否则判断下一个else if块……,以此类推,前面所有的判断都为假时,就执行else代码块。

var a = 10;
if (a > 10) {
}
else if (a < 0) {
}
else if (a == 0) {
}
else {
    alert("print");
}

选择:switch(x)、case y、break、……、default、break

x是变量,选择一个变量进行判断,y是值类型的操作数,符合case后的值就执行,否则继续选择下一个case,如果所有case都没命中,则执行default,default可以写在开始位置也可以写在最后。case以break收尾,最后default是默认选择也必须以break收尾。 Switch不能选择浮点数,在函数中使用Switch可以使用return替代break,使用return将会同时终止Switch和函数的执行。

switch (变量名) {
    case 值:
        //逻辑代码……
        break;
    case 值:
        //逻辑代码……
        break;
    //……
    default:
        //逻辑代码……
        break;
}

switch变体

多个case可组合为一组并只以一个break收尾。

switch (变量名) {
    case 值:
    //逻辑代码……
    case 值:
        //逻辑代码……
        break;
    case 值:
        //逻辑代码……
        break;
    //……
    default:
        //逻辑代码……
        break;
}

异常捕捉:try catch

可以使用异常捕捉语句来手动捕获异常并尝试对异常做出各种处理,这样就拦截了运行时可能发生的错误,把处理异常的权限交给了自己。这样做通常是因为有不可预期的错误可能将会发生。try块用于执行将被监视的代码块,catch用于当try块里的代码发生异常时将其捕获,捕获后你可以自己选择如何做出处理而不是让运行时错误抛出异常。

try {
    addalert("hello");//调用了不存在的方法
}
catch (error) {   
    alert(error.message);
}

try {
    addalert("hello");//调用了不存在的方法
}
catch {
    throw "调用了未知方法"; //手动抛出异常到控制台
}
finally {
    alert("继续执行程序");
}

 

循环:while(x)

x是布尔值。while的块会重复执行,每次执行前会判断x的真假,真就执行。

//打印0-10的数
b = true;
var z = 0;
while (b) {
    b = z < 10 ? true : false; //从0开始,到10结束,执行11次
    document.write(z + "</br>");
    z++;
} b = true;
var z = 5
while (b) {
    b = z < 10 ? true : false; //从5开始,到10结束,执行6次
    document.write(z + "</br>");
    z++;
}

whlie变体

do while(x)

x是布尔值。无论x是否是真,至少执行1次do块里的代码逻辑。如果x是真就一直执行。

b = true;
var z =0
//打印0-10的数
do {
    b = z <10 ? true : false; //从0开始,到10结束,执行11次
    document.write(z + "</br>");
    z++;
}
while (b) b = true;
var z=5
do {
    b = z < 10 ? true : false; //从5开始,到10结束,执行6次
    document.write(z + "</br>");
    z++
}
while (b);

for计数循环:for(x;y;z)

for专用于需要计数的循环,比while更简洁也容易控制一个在块内声明的变量。x是初始数(可引用父块的变量或在此处直接声明一个变量并同时初始化),z是计数器,y是布尔表达式。当x满足y时会马上进入循环而不是马上执行z处的计数,在循环1次后计数器才会累计,累计完成后再执行y处的判断,如果是真就继续执行循环。

//9-1=8
for (var i = 1; i < 9; i++)
{
    document.write(i);
}

//9-1+1=9
for (var i = 1; i <= 9; i++)
{
    document.write(i);
}

//9-0=9
for (var i = 9; i > 0; i--)
{
    document.write(i);
}

//9-0+1=10
for (var i = 9; i >= 0; i--)
{
    document.write(i);
}

//取最小循环数,9次
for (var x = 1, y = 10; x < 10 && y > 0 ; x++ , y--)
{
    document.write(x);
    document.write(y);
}

for (; ;) { document.write("loop dead") } //x、y、z都可以省略,除非在块里给定退出条件否则这样就是一个死循环

在自增/自减不满足y表达式后,循环就会自动终止,同时在for的括号里声明的x将被销毁。所以如果是一个嵌套的循环,自增自减不满足y表达式并退出后,如果下一次这个嵌套的循环再次执行时,for括号里的x将被视为全新的变量。利用这个特点可以写一个简单的算法:

//乘法表
for (var i = 1; i <= 9; ++i) {
    for (var z = 1; z <= i; ++z) {
        document.write("<span style='border:1px solid white;padding:3px;background:#91969a;color:white;font-family:宋体'>" + z + "×" + i + "=" + i * z + "</span>");
        z == i ? document.write("<br/>") : '';
    }
}

集合迭代:for(x in array)

javascript的foreach语句就是一个for语句,其计数器表示索引或属性名。

//如果是对象则for计数器是对象的属性名
var a = { name: "sam" };
for (var propertyName in a) {
    alert(a[propertyName]); //取值
} //如果是数组则for计数器是索引
var b = [{ id: , name: "sam" }, { id: , name: "leo" }]; for (var index in b) {      
    if (b.indexOf ( b[index] ) == ) {
        alert( b[index].id ); //取值
    }
}

2.声明式语句

声明变量

关键字:var

数据最终存储在内存中,但需要一个标识符来表示该数据,标识符就是变量的名称。

var x = 10;
//如果在块级别中的变量未使用var声明
//则该变量将被视为全局变量

声明函数

关键字:function/Function

声明式函数

function MyFun() {

变量式函数

var MyFun = function () {
}

全局函数:var x =new Funtion('param','z')

全局函数使用Funtion声明,它内部定义的变量属于全局,每个参数、代码块逻辑都是以字符串的形式定义。在Functon中定义的变量可以在当前页面任何位置处访问

var myfunction = new Function('x', 'y', 'var a=10;var b=20;return a+b+x+y');
var r = myfunction(1, 1)//print 32

var result = 10;//全局变量
var myfunction = new Function('return result');  //代码块返回全局变量result
alert(myfunction()); //print 10

自运行的匿名函数

匿名函数没有名字,无法调用,但可以使用括号将其括起来,然后在其末尾处使用()进行自运行调用,使它可以得到执行。

(function () {
    alert();
})();

声明对象

对象通常都是全局的,其属性也可以在任何时候任何地方被修改,可使用两种格式来声明对象。

function Student(name, age) {
    this.name = name;
    this.age = age;
    this.score = score;
}

function score() {
    
}
   
//传统格式的对象
var student = new Student("sam", 18);

//json格式的对象
var student = { name: "sam", age: 18, score: function() {} };
student.score();

数组声明

var result = new Array(10); //长度10
var result = new Array(10, "Pizza", 89.8); //三个元素
var result = [1, 2.5, 7, 9, 'hello', { name: "sam", age: 18 }]; //数组直接量

4.命令语句

终止当前循环:continue

continue是一个强制开关,强制关掉当前循环并强制开启新一次的循环。

结束单次循环:break

break会终止所有循环的执行。

终止方法执行:return

return语句放在方法体内,无论return出现在方法中的哪一个子块里,都会影响整个方法,立即终止并返回结果。无论怎样,方法结尾处的代码必须是以return进行收尾。

5.块语句

{}

由{}构成的是块,块里可以书写上面介绍的3种类型的语句列表,复合语句即一个语句块,使用大括号括起来即可。一个单独的语句块在js中不常用。

{
    var x = 10;
    var y = 2;
    y += ++x;
    alert(y);
}

whith{}

平时在获取对象的属性或函数时每次都要引用该对象,with语句块可以简化该操作,在with语句块里的代码可以不写对象名而直接使用对象的属性与方法。

var obj = { s: 1 }
with (obj) {
    alert(s)
}

Javascript - 学习总目录

Javascript - 表达式与语句的更多相关文章

  1. JavaScript学习笔记-表达式和语句

    表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...

  2. Javascript中表达式和语句的区别

    一.表达式:一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数. 以下例子就是表达式: a=35: b=1+a; a=function (){return 6}: b ...

  3. JavaScript中:表达式和语句的区别

    JavaScript中:表达式和语句的区别 Javascript语言精粹:表达式是由运算符构成,并运算产生结果的语法结构.程序是由语句构成,语句则是由“:(分号)”分隔的句子或命令.如果在表达式后面加 ...

  4. JavaScript 中表达式和语句的区别

    1.语句和表达式 JavaScript中的表达式和语句是有区别的.一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数.下面的每行代码都是一个表达式: myvar3 + ...

  5. 第四章:Javascript表达式和运算符

    表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果.程序中常用量是最简单的一类表达式就是变量.变量名也是一种简单的表达式,它的值就是赋值给变量的值.复杂的表达式是 ...

  6. JavaScript的条件语句

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

  7. 第一百节,JavaScript表达式中的运算符

    JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 E ...

  8. js 表达式与语句

    引子:表达式和语句很基础,但是有时会犯错,比如: function(){}//报错 (function(){})//不报错 function f(x){ return x + 1 }()//报错 fu ...

  9. JavaScript表达式--掌握最全的表达式,一切尽在掌握中,让表达不再是难事

    一.JavaScript表达式: 算术表达式: 字符串表达式: 关系(比较)表达式: 逻辑表达式 二.JavaScript运算符: ●什么是表达式--表达式是产生一个结果值的式子,常量,变量,运算符. ...

随机推荐

  1. FTP地址

    访问不了FTP的同学可以试试用IPv6 地址2001:da8:203:ed5:CEB2:55FF:FE8B:ED1来访问,用户名密码不变.

  2. OpenFlow PacketOut消息机制

    OpenFlow PacketOut消息机制 前言 由于最近实验的进行,遇到一个比较棘手的问题,就是利用控制器主动发送packet消息的问题,期间遇到一些问题,后来在RYU群中得到群友左木的帮助成功解 ...

  3. 关于“Scrum敏捷项目管理”

    此次关于“Scrum”的名词解析,主要目的是为我们的“OneZero”团队确定项目开发的模式. http://www.cnblogs.com/taven/archive/2010/10/17/1853 ...

  4. 远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    在做 数据分析(数据挖掘 或 机器学习)的时候,我们经常需要绘制一些统计相关的图表,这些统计.绘图的程序常常是跑在服务器上的,可是服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,于是这些统计 ...

  5. [代码]--IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  6. PL/SQL如何设置当前格局确保每次打开都给关闭前一样

    打开plsql  --> windows-->save layout 即可

  7. 【刷题】LOJ 6009 「网络流 24 题」软件补丁

    题目描述 某公司发现其研制的一个软件中有 \(n\) 个错误,随即为该软件发放了一批共 \(m\) 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些 ...

  8. LJ 5月6日A组考试考试题解

    [题目] T1(L2837) 晚餐队列安排 [题面] 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐的奶牛排在队尾,队伍的前半部分 ...

  9. 学习6__STM32--SPI外设之中断收发---

    <目标> STM32双机 SPI中断收发通信 <描述> # STM32双机配置为一主一从模式 # 采用主机中断发送,从机中断接收 # 收发机制采用不间断收发(发送为空就发送,接 ...

  10. DataTables合并单元格(rowspan)的实现思路(多分组分类的情况)

    直接上代码,原理之前的随笔已经讲过了.http://www.cnblogs.com/hdwang/p/7115835.html 1.先看看效果 2.html代码,含js代码 2.1 common.js ...