JavaScript总结

理解 javaScript

javaScript概述
什么是javaScript ?
  • javaScript 是一种基于对象的脚本语言
1.2、运行环境
  • 客户端 JavaScript 使用 浏览器 等工具执行
    Chrome 
    FireFox
  • 服务端 JavaScript 通过服务端的 JavaScript 引擎来运行 ( node.js )
1.3、开发工具

记事本、Eclipse 、 IDEA 等。

1.4、JavaScript 的组成
  • JavaScript = ECMAScript + BOM + DOM
1.5、客户端JavaScript的使用方式
  • 直接在 页面上 嵌入 JavaScript 代码
    <html>
        <head>
            <meta charset="UTF-8" >
            <title>标题</title>
            
            <script type="text/javascript">
                // 这里书写 JavaScript 代码
            </script>
            
        </head>
        <body></body>
    </html>
  • 链接外部 JavaScript 文件
    假设存在 hello.js 和 hello.html 在同一个目录中,则可以在 hello.html 的 head 区域中使用:
    <script type="text/javascript" src="hello.js"></script>

2、基础语法(核心语法)

【 JavaScript 跟 Java 语言一样,英文字母严格区分大小写】

2.1、变量和常量
  • 变量使用 var 关键字声明,比如 var x = 100 ;

  • 常量使用 const 关键字声明,比如 const PI = 3.14 ;

    var x = 100 ;
    console.log( x ); // 在浏览器的终端(Console)中输出
    const PI = 3.14 ;
    console.log( x );

变量的特点:

来者不拒,给啥是啥

2.2、数据类型
  • 原生数据类型
    number 表示数字类型,包括 整数、浮点数
    boolean 表示逻辑类型,其取值只有 true 和 false
    undefined 表示未定义的类型,如果仅仅声明了一个变量但是没有赋值,此时其取值就是 undefined ,这个值的类型就是 undefined 类型
    null 类型,只有一个取值 null
    string 表示字符串类型,在 JavaScript 中不区分 字符 和 字符串,因此 使用 "" 或 '' 都可以表示字符串

注意:
当 一个变量取值为 undefined 、null 、0 、-0 、"" 、’’ 、false 时可以表示 false ; 否则就表示 true 。

  • 引用类型
    数组类型
    对象类型
  • typeof 运算符 ( typeof() 函数 )

用来获取 变量中存储的 数值的 简单类型。

因为 JavaScript 是弱类型语言,因此使用 typeof 运算符 或 typeof() 函数求 引用类型变量值 的类型时是不准确的。

弱类型语言专家建议使用 “鸭子模型” 来识别一个引用类型的具体类型。

2.3、运算符

参看 书上 125 页表格。

== 和 ===

    == 仅仅用于比较两个数值是否相等,比如:
    '100' == 100 返回 true
    '100' == 99 返回 false
    === 需要比较 两个 数值 和 类型,比如
    '100' === 100 返回 fasle
    '100' === "100" 返回 true
    '100' === ‘100’ 返回 true
     100 === 100.0 返回 true

!= 和 !==

    != 比较两个数值是否不相等,如果不相等就返回true
        '100' != 100 返回 false
        '100' != 99 返回 true
     !== 用于比较两个 数值 和 类型,两者只要有一个不相同就返回 true
        '100' !== 100 返回 true (因为类型不一样)
        '100' !== '1000' 返回 true (因为数值不一样)
         1000 !== 1000 返回 false (因为类型一样、数值也一样)
2.4、流程控制
  • 分支语句
    if .... else if .... else 
    switch .... case  ... default .... 
  • 循环语句
    for
    while
    do .... while
    break 
    continue
  • for … in 循环
    处理数组:
    var a = new Array( "张三丰" , "张翠山" , "殷素素" , "张无忌" , "赵敏" );
    for( var i = 0 ; i < a.length ; i++ ) {
        var e = a[ i ] ;
        console.log( i , e ) ;
    }
    
    for( var i in a ) {
        var e = a[ i ] ;
        console.log( i , e ) ;
    }
    
    // JSON : JavaScript Object Notation
     var map = { "id" : 1001 , "name" : "王姨" , "gender" : "女" };

     for( var key in map ) {
         var value = map[ key ] ; // 相当于 Java 语言中 根据 key 取出 value ( map.get( key ) )
         console.log( key , value  );
     }
    
2.5、异常处理

Error 类型 表示 异常,其中有两个常用属性:

  • name 表示异常类型

  • message 表示异常提示信息

异常处理语句

  • 捕获异常 try … catch … finally
    try {
    
    } catch ( e ) {
    
    } finally {
    
    }
  • 抛出异常
    throw new Error( "message" );

常见的异常类型:

  • ReferenceError

  • TypeError

  • RangeError

  • EvalError

    使用 eval 函数 可以求一个表达式的值,比如 eval( "1+250" ) 的结果就是 251
    尝试执行 eval( "haha + heihei + hehe + enen" )
  • SyntaxError

3、自定义函数

3.1、声明方式
    function 函数名称( 参数列表 ) {
        函数体
    }
    
    function hello( name ) {
        console.log( "hello , " + name ) ;
    }
3.2、调用方式
  • 直接使用函数名调用(最常见的)
    函数名称( 实参列表 ) ;
    
    hello( "zhangsanfeng" ) ;
  • 使用 call 方式调用

  • 使用 apply 方式调用

3.3、参数传递

在调用函数时,可以向函数传递任意多个参数,这些参数(实参)被存放在一个名称是 arguments 的数组中,这个 数组只能在函数内部使用

3.4、返回值

如果一个函数需要返回数据,则直接在函数内部使用 return 语句即可,不需要声明返回类型

    function add( a , b ) {
        var c = a + b ;
        return c ;
    }

对于没有返回值的函数,如果使用变量接受其返回值,则该变量存储的值是 undefined

    function show(){
    }
    
    var x = show(); // x 此时的取值是 undefined

如果期望某个方法立即结束,可以使用 return 语句

    function div( a , b ){
        if( b === 0 ) {
            return ; // 仅仅让方法立即结束,不返回任何数据
        }
        var c = a / b ;
        return c ; // 返回变量 c 中存储的数据
    }
3.5、匿名函数

如果将 函数 整体作为一个 值 赋值给一个变量,则这个变量就表示这个函数,使用这个变量的名称即可调用这个函数。

    var x = function add( a , b , c ) {
                    var d = a + b  + c ;
                    return d ;
                } ;
     
     var r = x( 100 , 200 , 300 );
     console.log( r );

此时,原来在 function 之后的函数名将不能再使用

    对于上面的 add 函数来说,如果使用:
     var y = add( 100 , 200 , 300 ) ;
    形式调用,将会触发 ReferenceError 异常

所以,可以在 等号 之后 将 函数名省略,从而让 函数 成为 匿名函数

    var x = function ( a , b , c ) {
                    var d = a + b  + c ;
                    return d ;
                } ;
     
     var r = x( 1 , 2 , 3 ); // 可以执行 前面定义的函数
     
     var haha = x ;
     haha( 5 , 6 , 7 ); // 可以执行 前面定义的函数
     
     x = null ;
     x( 4 , 5 , 6 ) ; // 此时无法执行 前面定义的函数
3.6、立即执行的函数

一个函数被声明后就立即执行

    使用形式:
        ( 函数 ) ( 实参列表 );
         第一对 圆括号 内是一个 函数的引用 或 函数的声明
         第二对 圆括号 内是执行该函数时传入的实际参数
         
     比如:
        var x = function( a , b ) {  
            return a + b ; 
        }
        var r = ( x ) ( 1 , 2 ) ;
        
        可以将以上代码简化为:
        ( 
            function( a , b ) {  
                return a + b ; 
           } 
        ) ( 1 , 2 ) ;
        

4、“面向对象编程”

4.1、声明 “类” ( 相当于 Java 语言中的 class )

在 JavaScript 中不能直接使用 class 关键字 声明 “类”。

因此,需要借助于 function 关键字来声明 “类” 。

这里约定:

  • 普通的函数名 第一个单词全部小写,如果有多个单词则从第二个单词开始首字母大写
    function add( a , b ){
    }
    
    function showName(){
    }
  • 对于当作 “类” 来使用的 函数,应该将 所有单词首字母大写 ( 就像 Java 语言中 类的命名规范一样 )
    function Student(){
    }

声明一个 “类” 时,可以借助于 函数的参数 向 “类” 的构造方法传递参数

    // Human 相当于 "类" 名
    // Human( id , name , gender ) 相当于 Human "类" 的构造方法
    // id 、name 、gender 就是 Human "类" 的构造方法 的形参
    function Human( id , name , gender ) { 
        // 当 执行到 this.id  时 就会为 当前实例添加一个名称是 id 的属性( 它用来接受来自参数的值 )
         this.id = id ;
         this.name = name ;
         this.gender = gender ;
    }

如果创建一个 “类” 的实例并为其构造方法传入相应的参数,这些参数值应该属于当前被创建的实例

所以在 "类"内部可以使用 this 关键字 来引用当前的实例,比如 this.id = id ;

    public class Human {
    
        private Integer humanId ; // 字段(Field)
        private String name ;
        private char gender ;
        
        public Human( Integer id , String name , char gender ) {
            this.id = id ;
            this.name = name ;
            this.gender = gender ;
        }
        
        // 方法 :  getId() ------>  去除get 和 () 部分 ---->  Id  --->  将首字母变小写  --->  id  ( 属性 ( property ) )
        public Integer getId(){
            return this.humanId ;
        }
        
        public void setId( Integer id ) {
            this.humanId = id ;
        }
        
        // 此处省略 name 和 gender 的 getter 和 setter
    }
4.2、创建 “类” 的实例 ( 相当于 Java 语言中的对象(实例: instance ) )

以之前的 Student “类” 为例,创建 Student “类” 的实例,使用以下语句:

    var s = new Student();

以之前的 Human “类” 为例,创建 Human “类” 的实例,使用以下语句:

    var h = new Human( 1001 , "李睿" , "女" );
4.3、访问 实例(instance) 中的 属性 和 方法
  • 获取
    console.log( h.id ) ;
    console.log( h.name );
    console.log( h.gender ) ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值