表达式与语句(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. (第十二周)新功能WBS

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 新增加的功能:背景音乐 功能 子功能 二级子功能 预计花费时间(小时) 实际花费时间(小时) 背景音乐 界面组 ...

  2. Alpha冲刺第6天

    Alpha第六天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 03160 ...

  3. An ''all'' model group must appear in a particle with...问题解决记录

    场景: 最近在一个新项目的依赖包调整过程中,引入包之后,发现项目启动报错,一直启动不成功,经过查询和排查,发现是包对xml解析冲突的问题: 报错信息: [WARNING] Nested in org. ...

  4. Python爬虫:新浪新闻详情页的数据抓取(函数版)

    上一篇文章<Python爬虫:抓取新浪新闻数据>详细解说了如何抓取新浪新闻详情页的相关数据,但代码的构建不利于后续扩展,每次抓取新的详情页时都需要重新写一遍,因此,我们需要将其整理成函数, ...

  5. GS 服务器超时时间设置

    工作中 遇到一个超时的问题 与徐庆同学沟通后 了解了下超时时间设置的地方 1.web.congfig问题: 常规路径 C:\Program Files\GenerSoft\bscw_local\web ...

  6. Git从零开始(一)

    一.首先windows安装git客户端 官网下载地址:https://git-for-windows.github.io/,这里下载会很慢,我试了好几次都失败了. 百度网盘资源: https://pa ...

  7. Python网络编程:IO多路复用

    io多路复用:可以监听多个文件描述符(socket对象)(文件句柄),一旦文件句柄出现变化,即可感知. sk1 = socket.socket() sk1.bind(('127.0.0.1',8001 ...

  8. Spring之AOP注解配置

    1.导入相应jar包 2.引入约束并配置XML文件 <beans xmlns="http://www.springframework.org/schema/beans" xm ...

  9. 【设计模式】—— 组合模式Composite

    前言:[模式总览]——————————by xingoo 模式意图 使对象组合成树形的结构.使用户对单个对象和组合对象的使用具有一致性. 应用场景 1 表示对象的 部分-整体 层次结构 2 忽略组合对 ...

  10. 如何把EntityList转换成DataSet

    public static DataSet ToDataSet<TSource>(this IList<TSource> list) { Type elementType = ...