基本概念

永利皇宫402
1. Undefined类型只有一个值,即特殊的undefined。在使用var操作符声明变量,但未初始化,值便是undefined。
    var message;
    alert(message == undefined);  //true
2. 也可以给变量显式的赋值undefined。
    var message = undefined;
    alert(message == undefined);  //true
3. 然而困惑的有一点就是变量是否声明,typeof操作符返回的都是undefined。
    var message; //声明
    //var age;   //未声明
    alert(typeof message);  //undefined
    alert(typeof age);      //undefined

    二. Undefined类型

    二. 标识符

 
 函数对其他语言来讲都是贰个基本的概念。通过函数能够打包大肆多条语句,而且能够在任哪里方、任什么日期候调用实施。ECMAScript中的函数使用function关键字来声称,后跟壹组参数以及函数体。

 
 函数method()被定义了四回,第二个函数给参数加十,而第二个函数给参数加20。由于后定义的函数覆盖了先定义的函数,因而调用函数时,重回的结果是30。

1. Null类型是第二个只有一个值的数据类型,即特殊的null。null值表示一个空对象指针,所以检测null值会返回"object"。
    var message = null;
    alert(typeof message);  //object
2. 如果定义的变量将来会保存对象,那么可以把变量的值初始化为null,这样检查null值就可以知道变量是否保存了一个对象的引用。
    if (message != null) {
        //对message对象执行操作
    }
3. 实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。
    alert(null == undefined);  //true
4. 对于意在保存对象的变量来说,可以把值初始化为null,从而体现了null作为空对象指针的惯例。而没有必要吧一个变量的值显式地设置为undefined,从而有助于进一步区分null和undefined。

    九. switch语句

    for (initialization; expression; post-loop-expression) statement

    for (var a = 0; a < 10; a++) {
        alert(a);
    }
    for (property in expression) statement

    for (var propName in window) {
        document.write(propName);
    }
1. javascript中的一切(变量、函数名、操作符)都区分大小写,如变量名text和变量名Text代表两个不同的变量。
1. ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象。
    var a = new Object();
2. 在ECMAScript中,如果不给构造函数传递参数,则可以省略后面的那一对圆括号。(不推荐)
    var a = new Object;
3. 仅仅创建Object的实例并没有什么用处,但关键是要理解一个重要的思想:即在ECMAScript中,Object类型是所有它的实例的基础。换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。

    五. Number类型

1. Boolean类型只有两个字面值: true和false。和数字值不是一回事,所以true不一定等于1,false不一定等于0。给变量赋Boolean类型值:
    var a = true;
    var b = false;
2. Boolean类型的字面值true和false是区分大小写的,True和False都不是Boolean值,而是标识符。
3. 虽然Boolean类型只有两个字面值,但ECMA中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。
    var a = 'dong';
    var b = Boolean(a);
    alert(b); //true
    switch (expression) {
        case value: statement
            break;
        case value: statement
            break;
        case value: statement
            break;
        case value: statement
            break;
        default: statement

    switch (i) {
        case 5:
            alert('5');
            break;  
        case 15:
            alert('15');
            break;  
        case 25:
            alert('25');
            break;  
        default:
            alert('other');

    三. 注释

    一. typeof操作符

1. javascript中的语句以一个分号结尾,如果省略分号,则由解析器确定语句的结尾。
2. 虽然语句结尾的分号不是必需的,但建议任何时候都不要省略,避免压缩代码时出现错误,增进代码性能。
    var c=a+b  //即使没有分号也是有效的语句 -- 不推荐
    var c=a+b; //有效的语句 -- 推荐
3. 多条语句组合到一个代码块中,代码块以左括号({)开头,以右括号(})结尾。
    if (text) {
        alert(text);
    }
4. 条件控制语句最佳实践是始终在控制语句中使用代码块
    if (text)
        alert(text);  //有效,但容易出错
    if (text) {
        alert(text);  //有效,推荐使用
    }
注释有两种:
    1. 单行注释:
        //我是单行注释
    2. 块级注释: 
        /*
        *
        *我是块级注释
        *
        */

    1. 区分轻重缓急写

字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 进纸
\\ 斜杠
\’ 单引号(’),在用单引号表示的字符串中使用。例如: ‘ I am \’wzd\’ ‘
\" 双引号("),在用双引号表示的字符串中使用。例如: " I am \"wzd\"  "
\xnn 以十六进制代码nn表示的一个字符(其中n为0~F)。例如: \x41表示"A"
\unnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。例如: \u03a3表示希腊字符

    六. String类型

    4. 严厉情势

    do {
        statement
    }while(expression)

    var a = 1;
    do{
        a++;      
    }while(a < 10)

肆 数据类型

   
ECMA-26二还描述了别的一组不能够当做标记符的保留字,那几个保留字还尚未特定的用途,但有相当大可能率在未来作为注重字。

    四. Boolean类型

    四. for语句

⑤ 操作符

 
 ECMA函数的参数大很多任何语言中等高校函授数的参数有所差别。ECMAScript函数不介意传递进入多少个参数,也不在乎传进来参数是何许数据类型。也便是说,纵然你定义的函数只接受两个参数,在调用那个函数时也不至于一定要传送三个参数。可以传递一个、四个乃至不传递参数,而解析器永恒不会有如何怨言。之所以会那样,原因是ECMAScript中的参数在其中是用1个数组来代表的。函数接收到的始终是以此数组,而不怜惜数组中带有哪些参数。若是这些数组中不带有其余因素,无所谓;假诺带有多少个要素,也并没不日常。实际上,在函数体内可以通过arguments对象来走访那么些参数数组,从而获取传递给函数的每1个参数。(第七个参数是arguments[0])

    function method () {
        alert(arguments.length);
    }
    method("string", 45);  //2
    method("string");      //1
    method();              //0


注: ECMAScript中的所有参数传递的都是值,不肯能通过引用传递参数。
arguments的值永远与对应的命名参数保持同步。
arguments[0]获取第一个参数,arguments.length获取传入参数个数。
如果函数只传入一个参数,那么arguments[1]设置的值不会反映到命名参数上。因为arguments对象的长度是由传入的参数个数决定的,而不是定义函数的命名参数个数决定的。

    function fn (a,b) {
        arguments[1] = 10;
        alert(arguments.[1]); //10
    }
    fn(1,2);

    function fn (a,b) {
        arguments[1] = 10;
        alert(arguments.[1]); //undefined
    }
    fn(1);

    七. Object类型

    二. 保留字

    label: statement

    start: for (var i = 0; i < count; i++) {
        alert(i);
    }

 
 ECMAScript函数不能够像古板意义上那么达成重载。而在其余语言中(如java)中,可感觉贰个函数编写四个概念,只要那八个概念的签署(接受的参数的类型和多少)不一致就可以。如前所述,ECMAScript函数没有签订契约,因为其参数是由包括零或多个值的数组来代表的。而从不函数具名,真正的重载是不容许毕其功于一役的。
要是定义了八个名字同样的函数,则该名字只属于后定义的函数。

    function method (num) {
        return num + 10;
    }
    function method (num) {
        return num + 20;
    }
    var result = method(10);  //30
abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public  

    七. break和continue语句

javascript有5种简单数据类型,1种复杂数据类型。
    简单数据类型: String、 Number、 Null、 Undefined、 Boolean;
    复杂数据类型: Object;
    function method (num1, num2) {
        return num1 + num2;
    }
    var result = method(5,10);  //15
鉴于ECMAScript是松散型的,因此需要有一种手段来检测变量的数据类型 -- typeof操作符。
    'undefined' -- 值未定义
      'boolean' -- 值是布尔值
       'string' -- 值是字符串
       'number' -- 值是数字
       'object' -- 值是对象或者null (null被认为是一个空的对象引用)
     'function' -- 值是函数
ECMA-262描述了一组用于操作数据值的操作符,包括算术操作符、位操作符、关系操作符和相等操作符。
1. Number类型使用IEEE754格式表示整数和浮点数值,为支持各种数值类型,ECMA-262定义了不同的数值字面量格式。
最基本的数值字面量格式是十进制整数:
    var intNum = 1;  //整数
整数还可以通过八进制(8位数)的字面值来表示。八进制字面值的第一位必须是0,然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值分析。
    var a = 77;  //77
    var b = 077; //八进制的63 (7*81+7*80)
    var c = 079; //无效的八进制数值79
八进制字面量在严格模式下无效,会导致javascript引擎报错。
十六进制字面值的前两位必须是0x,后跟任何十六进制数字(0~9及A~F)。其中,字母A~F可以大写,也可以小写。
    var a = 0xA;  //十六进制的10 (10*160)
    var b = 0x1f; //十六进制的31 (1*161+15*160)
在进行算术计算时,所有已八进制和十六进制表示的值最终都转换为十进制数值。

2 关键字和保留字

    if (condition) statement1 else statement2    

    if (a > 10) {
        alert('a大于10');
    } else if (a = 10) {
        alert('a等于10');
    } else {
        alert('a小于10');
    }

 
 函数在return语句之后甘休并随即退出,位于return语句之后的其余轮代理公司码都不会被施行。

1. constructor: 保存着用于创建当前对象的函数。对面前面的例子来说,构造函数(constructor)就是Object()。
2. hasOwnProperty(propertyName): 用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如: o.hasOwnproperty("name"))。
3. isPrototypeOf(object): 用于检查传入的对象是否是当前对象的原型。
4. propertyIsEnumerable(propertyName): 用于检查给定的属性是否能够使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
5. toLocaleString(): 返回对象的字符串表示,改字符串与执行环境的地区对应。
6. toString(): 返回对象的字符串表示。
7. valueOf(): 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

    2. 未有重载

   Object的每种实例都持有下列属性和措施

 

③ 变量

1. 这些转换规则对理解流控制语句自动执行相应的Boolean值转换非常重要。
    var message = 'dong';
    if (message) {  //字符串message被自动转换成了对应的Boolean值(true)。
       console.log('value');
    }
2. 由于存在这种自动执行的Boolean值转换,因此确切地知道在流控制语句中使用的是什么变量至关重要。

    六. label语句

1. String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(')表示
    var a = 'hello';
    var b = "world";
1. 标识符指的就是变量名、函数名、属性名、函数的参数,不能把关键词、保留字、true、false、null用作标识符。
2. 它按照下列格式规则:
    一、 第一个字符必须是字母、下划线或者($)美元符号;
    二、 其他字符可以是字母、下划线、数字或者($)美元符号;
3. 推荐标识符采用驼峰大小写格式,也就是第一个字母小写,后面的单词首字母大写,如: getName、getAge。

   
ECMA-26二讲述了一组具备一定用途的显要字,可用以表示调节语句的启幕或甘休,可能用于实行一定操作等。关键字是语言保留的,不能够用来标志符。

    八. with语句

① 语法

break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw delete
in try    

    五. 语句

    while(expression) statement

    var a = 1;
    while(a < 10) {
        a++;
    }

 
 ECMAScript中的函数在概念时不用钦点是或不是重回值。实际上,任何函数在任曾几何时候都得以透过return语句后跟要回到的值来完成重返值。

    二. do-while语句

    with (expression) statement

    var qs = location.search.substring(1);
    var hostName = location.hostname;
    var url = location.href;
    改成:
    with (location) {
        var qs = search.substring(1);
        var hostName = hostname;
        var url = href;
    function method (num1, num2) {
        return num1 + num2;
        alert('hello'); //不会被执行
    }
    var result = method(5,10);  //15
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefine

⑥ 语句

    一. if语句

   String类型包蕴部分奇怪的字符字面量,也叫转义体系,用于表示非打字与印刷字符,也许既有其余的用处。

1. ECMAScript5引入了严格模式的概念,它给javascript定义了一种不同的解析与执行模型,ECMAScript3一些不正确的行为将得到处理。
2. 要在脚本中开启严格模式,在顶部写入如下代码即可:
    "use strict";
    这行代码是一个编译指示,告诉支持的js引擎切换到严格模式,这是为不破坏ECMAScript3语法而特意选定的语法。

    壹. 掌握参数

    五. for-in语句

    var num = 0;
    for (var i = 1; i < 10; i++) {
        if (i % 5 == 0) {
            break;
        }
        num++;
    }
    alert(num);  //4

    var num = 0;
    for (var i = 1; i < 10; i++) {
        if (i % 5 == 0) {
            continue;
        }
        num++;
    }
    alert(num);  //8
1. javascript中的变量是松散型的,可以用来保存任何类型的数据,每个变量仅仅是一个用来保存值的占位符而已。定义变量要使用var操作符(关键字),后跟变量名(标识符)。
    var message
2. 可以使用一条语句定义多个变量,用逗号分隔开。
    var message, name, age;  //定义了message、name、age3个变量。
3. 这个message变量可以保存任何类型的数据,如果未初始化,保存一个特殊值 -- undefined,也可以直接初始化。
    var message = 'dong'
4. var操作符定义的变量将成为定义该变量的作用域的局部变量。
    function fn() {
        var message = 'dong';
        alert(message);  //dong
    }
    fn();
    alert(message);      //message is not defined
5. 变量也可省略var操作符,那么这个变量是一个全局变量。
    function fn() {
        message = 'dong';
        alert(message);  //dong
    }
    fn();
    alert(message);      //dong
6. 虽然省略var操作符可以定义全局变量,但不是推荐的做法,因为在全局作用域中定义的全局变量很难维护。

⑦ 函数

    三. while语句

    一. 关键字

   
下表给出各样数据类型及其相应的转变规则。

    function functionName (arg0, arg1, arg2, ...) {
        statement
    }

    function method (name) {
        alert("hello" + name);
    }

    三. Null类型

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图