javascript学习笔记——语句

语句就是javascript整句和命令。

表达式语句:

count++;    alert(123);    a = 100;  .......

复合语句和空语句:

复合语句就是用逗号将多个语句连在一起形成复合语句。{x=1;y=2;alert(x);alert(y)}

ps:在javscript中没有块级作用域,只有函数作用域。

空语句包含0条语句,在部分时候也是有用的。

如for(var i = 0; i < 3 ; a[i++] =0);在这里最后是一个分号,会执行for循环括号里面的语句。

声明语句:

var    声明一个变量。

假如var声明在一个函数作用域内,那么这个变量就是局部作用域。

ps:变量在函数作用域中有提前声明的问题

window.onload = function(){
    var b = "hello world";
    function a(){
        console.log(b);  //变量提前声明,undifined
        var b = "world hello";  //由于变量b在这里定义了,所以导致变量提前声明
        console.log(b);

    }
    console.log(b);
    a();
}

在上面的代码中,函数a中先输出b,但是b并没有在之前声明,但是在b之后有声明b=“world hello",根据变量在函数作用域提前声明的规则,那么var = b会提前到函数块的最顶上,所以第一个console.log(b)为undifined。

function   定义函数,必须使用花括号,即使是一条语句,不可省略花括号。

var a = function(){}  函数定义表达式方式

function a(){}   函数声明方式

这两种定义函数的方式是有区别:

第一种表达式方式在定义之后,var声明的变量会提前到作用域的顶部,但是函数块还在原来的地方,所以假如在函数块之上调用函数就会报错。

第二种函数声明方式在声明之后,变量和函数块都会提前到作用域的顶部,可以做作用于上下文,所以在函数块之上调用函数可以正常使用。

window.onload = function(){
                alert(b());   //"world hello"
                alert(a());   //Uncaught TypeError: a is not a function

                //函数表达式中,只有变量声明被提前了,变量初始化代码依旧还在原来的位置
                var a = function(){
                    return "hello world";
                }

                //函数声明语句,函数名称和函数体都提前了,可以在声明之前调用它
                function b(){
                    return "world hello"
                }
            }

条件语句:

if    else if     switch

if(expression)  statement    if里面的expression必须要写,statement也是必须要写的语句。

switch可以处理多条分支的情况

switch(expression){

case (expression) :

statement;

break;

...........

default :

statement;

break;

}

在switch中假如没有break,那么语句会一直执行直到switch最后一条语句。

在函数中可以中return代替break。

case的匹配是使用"==="进行比较的,所以匹配的时候不会进行类型的转换。

switch的比较是从上到下的,default可以放到任何一个位置的。

循环

while     do/while    for     for/in

do/while至少执行一次的循环,do是先执行语句,然后在通过while去进行判断

for/in是用来遍历一个对象的属性的

for(variable  in   object),即使object是一个原始值,也会转换成包装对象来遍历的。

但是遍历也是有条件的,只能遍历可枚举的属性,而javascript核心方法和对象属性都是不可枚举的,所以在遍历的时候这些都没有办法遍历出来,而自己定义的对象属性和方法就可以遍历出来。

如果for/in的循环体在还没有遍历到某属性的时候就删除了,那么这个属性就不会再获取到;如果for/in循环体中增加了一个某属性,那么它也不会被获取到。

属性枚举的顺序,一般来说通过属性定义的先后顺序来枚举的。

时间: 2024-11-05 02:36:35

javascript学习笔记——语句的相关文章

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个

Java程序猿的JavaScript学习笔记(1——理念)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Ja

javascript学习笔记------概念相关

javascript中的函数.对象 1. 在javascript中,函数是被当成一种数据类型,它可以被存储在一个变量.数组.对象中,可以被当作参数传递到另一个函数中. 函数就像是字符串和数字这样的的数据类型,它可以是其它对象的一个属性 2. 函数定义的三种方式: function square(x) {   return x*x;   }    //function 语句 var square = function(x) { return x*x;}  //函数直接量  function lit

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一