zoukankan      html  css  js  c++  java
  • 前端基础之JavaScript

    JavaScript的历史:

    • 1992Nombas开发出C-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后改名ScriptEase(客户端执行的语言)
    • Netscape(网景)接收Nombase的理念(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言。Sun和Netscape共同完成,后改名叫JavaScript
    • 微软随后模仿在IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript
    • ECMA(欧洲计算机制造协会)为了统一三家,定义了ECMA-262规范,从此,Web浏览器就开始努力(虽然有着不同程度的成功和失败)将ECMAScript作为JavaScript实现的基础
    • ECMA-262是JavaScript标准的官方名称

        ECMAScript的详细发展历程:

    Java的引入方式:

      

    1.Script标签内些代码:
    <Script>
          //在这里写JS代码    
    </Script>
    
    
    2.引入额外的JS文件
    <Script src="myscript.js"></Script>

    JavaScript语言规范:

      1.注释:单行注释:    //      这是单行注释

          多行注释: /* */  /*这是多行注释*/

      2.结束符:JavaScript中的语句要以(;)结束符

    JavaScript语言基础:

      1.JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头

      2.声明变量使用var 变量名;的格式声明

    var name = "kxl";
    var age = 18;
    /*注意:
    变量名是区分大小写的
    可使用驼峰式命名*/

    JavaScript数据类型:

      JavaScript拥有动态类型:

    var x;                       //此时x是undefind
    var x=1;                   //此时x是数字
    var x = "kxl";            //此时x是字符串           

      数字类型:JavaScript不区分整型和浮点型,就只有一种数字类型

    var a = 5.20;
    var b = 520;
    var c = 520e5;  // 52000000
    var d = e-5;  // 0.0052

    常用方法:(parseInt将变量转换为整型,parseFolat将变量转换为浮点型)
     parseInt("520") //返回520
    parseInt("AB") //返回NaN,NaN属性是代表非数值的特殊值。
    parseFloat("52.013") //返回52.013

      字符串:

    var a = "Hello"
    var b = "world;
    var c = a + b; 
    console.log(c);  // 得到Helloworld

      字符串的常用方法:

      拼接字符串一般使用“+”

      布尔值类型:

                   区别于Python,true和false都是小写

    var a = true;
    var b = false;

      数组:

    与Python中的列表相似
    var a = [123, "ABC"];
    console.log(a[1]);  // 输出"ABC"

      数组的常用方法:

      遍历数组中的元素:

    var a = [10, 20, 30, 40];
    for (var i=0;i<a.length;i++) {
      console.log(i);
    }

    null和undefined:

    • undefined表示声明的变量未初始化默认值为undefined,函数无明确返回值是返回undefined
    • null表示值不存在

      undefined表示声明了变量,但是还没有赋值。null声明了变量是空值

    类型查询:

    typeof "abc"  // "string"
    typeof null  // "object"
    typeof true  // "boolean"
    typeof 123 // "number"
    typeof是一个一元运算符(就像++,--,!,- 等一元运算符),不是一个函数,也不是一个语句。

    运算符:

    算数运算符:                           + - * / % ++ --
    比较运算符:                            > >= < <= != == === !==
    
    注意:
    
    1 == “1”  // true
    1 === "1"  // false
    
    逻辑运算符:                            && || !
    赋值运算符:                            = += -= *= /=

    流程控制:

      if-else:

    var a=10;
    if (a>5){
        console.log("yes");    
    }else{
       console.log("no");
    }

    if-else if-else:

    var a = 10;
    if (a > 5){
      console.log("a > 5");
    }else if (a < 5) {
      console.log("a < 5");
    }else {
      console.log("a = 5");
    }

    switch:

    var day = new Date().getDay();
    switch (day) {
      case 0:
      console.log("Sunday");
      break;
      case 1:
      console.log("Monday");
      break;
    default:
      console.log("...")
    }

    for:

    for (var i=0;i<10;i++) {
      console.log(i);
    }

    while:

    var i = 0;
    while (i < 10) {
      console.log(i);
      i++;
    }

     三元运算:(语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。)

    var a = 1;
    var b = 2;
    var c = a > b ? a : b

    输出结果:

    函数:

      函数定义:JavaScript中的函数和Python中的非常类似,只是定义方式有点不同。

    //普通函数定义
    function f1(){                                  //function后加函数名()
         console.log("Hello world");          //函数体         
    }
    //带参数的函数
    function f2(a,b) {                    //定义的f2函数有两个参数
          console.log(arguments);  //arguments就相当于Python中的args
          console.log(arguments.length);//arguments的长度也就是在调用时
                                                         //总共传了几个参数
          console.log(a,b);
    }
    
    //带返回值的函数
    function sum(a,b){
           return a+b;         //返回a+b的结果可用变量接收
    }
    sum(1,2)
    
    //匿名函数
    var  sum=function(a,b){      //匿名函数可以赋值给一个变量
          return a+b
    }
    sum(2,5)   //调用时变量名加()
    
    //自执行函数
    (function(a,b){
         return a+b;    
    })(1,2);              //后面加括号内有参数说明自己调用自己

    函数的全局变量和局部变量:

      局部变量:

        在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

        全局变量:

        在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。】、

      变量生存周期:

        JavaScript变量的生命期从它们被声明的时间开始。

        局部变量会在函数运行以后被删除。

        全局变量会在页面关闭后被删除。

    作用域:首先在函数内部查找变量,找不到择道外层函数找,逐步找到最外层

      示例:

    1、var city = "BeiJing";
    function f() {
      var city = "ShangHai";
      function inner(){
        var city = "ShenZhen";
        console.log(city);
      }
      inner();
    }
    
    f(); 
    
    /*输出结果是"ShenZhen" */
    
    2、var city = "BeiJing";
    function Bar() {
      console.log(city);
    }
    function f() {
      var city = "ShangHai";
      return Bar;
    }
    var ret = f();
    ret();  
    /*  输出结果:"BeiJing"*/
    
    3、闭包函数
    var city = "BeiJing";
    function f(){
        var city = "ShangHai";
        function inner(){
            console.log(city);
        }
        return inner;
    }
    var ret = f();
    ret();
    /* 输出结果: "ShangHai"*/

    内置对象和方法:(JavaScript中所有事物都是对象:字符串,数字,数组,日期等,对象都有属性和方法)

      自定义对象:类似Python中的字典类型

    var a = {"name": "kxl", "age": 18};
    console.log(a.name);
    console.log(a["age"]);
    
    
    遍历对象中的内容:
    
    var a = {"name": "kxl", "age": 18};
    for (var i in a){
      console.log(i, a[i]);
    }

    创建对象:
    var person=new Object();  // 创建一个person对象
    person.name="kxl";  // person对象的name属性
    person.age=18;  // person对象的age属性
    扩展知识:
    
    // 父类构造函数
    var Car = function (loc) {
      this.loc = loc;
    };
    
    // 父类方法
    Car.prototype.move = function () {
      this.loc ++;
    };
    
    // 子类构造函数
    var Van = function (loc) {
      Car.call(this, loc);
    };
    
    // 继承父类的方法
    Van.prototype = Object.create(Car.prototype);
    // 修复 constructor
    Van.prototype.constructor = Van;
    // 扩展方法
    Van.prototype.grab = function () {
      /* ... */
    };
    JavaScript中的继承

    Date对象:

      创建Date对象:

    Date对象的方法:

    var d = new Date(); 
    //getDate()                 获取日
    //getDay ()                 获取星期
    //getMonth ()               获取月(0-11)
    //getFullYear ()            获取完整年份
    //getYear ()                获取年
    //getHours ()               获取小时
    //getMinutes ()             获取分钟
    //getSeconds ()             获取秒
    //getMilliseconds ()        获取毫秒
    //getTime ()                返回累计毫秒数(从1970/1/1午夜)

    示例:

    JSON对象:

    var str1 = '{"name": "Alex", "age": 18}';
    var obj1 = {"name": "Alex", "age": 18};
    // JSON字符串转换成对象
    var obj = JSON.parse(str1); 
    // 对象转换成JSON字符串
    var str = JSON.stringify(obj1);

     RegExp对象:

        创建正则对象方式:

          1:参数1是正则表达式,参数2是验证模式:g(global)和i(忽略大小写)

          2:正则表达式/匹配模式

    var s1 = "name:kxl age:18";
    
    s1.replace(/a/, "哈哈哈");      // "n哈哈哈me:kxl age:18"
    s1.replace(/a/g, "哈哈哈");     // "n哈哈哈me:kxl 哈哈哈ge:18"      全局匹配
    s1.replace(/a/gi, "哈哈哈");    // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18"  不区分大小写

    Math对象:

      

  • 相关阅读:
    使用SandCastle生成代码注释文档
    如何修改默认的ModelState错误提示:字段{0}必须是一个数字
    2011总结 致:过去的30年
    CentOS下安装、配置Nginx,配合IIS做负载均衡
    灵活应用js调试技巧解决样式问题
    扩展IList对象,实现深拷贝扩展方法
    IE8对JS数组,采用属性遍历的解析差异
    如何开始Github
    Response.Clear 还是 Response.ClearHeaders
    URLRoutingModule如何处理静态文件?
  • 原文地址:https://www.cnblogs.com/kxllong/p/8120489.html
Copyright © 2011-2022 走看看