zoukankan      html  css  js  c++  java
  • day 51 html 学习 js 学习

    函数

    函数定义

    JavaScript中的函数和Python中的非常类似,只是定义方式有点区别

    // 普通函数定义
    function f1() {
      console.log("Hello world!");
    }
    
    // 带参数的函数
    function f2(a, b) {
      console.log(arguments);  // 内置的arguments对象
      console.log(arguments.length);
      console.log(a, b);
    }
    
    // 带返回值的函数
    function sum(a, b){
      return a + b;
    }
    ret=sum(1, 2);  // 调用函数 并用ret接受返回值

    console.log(ret) //将返回值打印到控制台上去
    // 匿名函数方式 var sum = function(a, b){ return a + b; };
    sum(
    1, 2); //调用它 // 立即执行函数 (function(a, b){ return a + b; })(1, 2);

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

    局部变量

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

    全局变量:

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

    变量生存周期:

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

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

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

    作用域

    首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

    几个例子:

    var city="Beijing";
    function f(){
        var city="shanghai";
        function inner(){
    
            // var city="nanjing";
            console.log(city);
        }
        inner();
    }
    f();
    //最终打印的结果是nanjing 当将var city='nanjing' 注释掉之后打印的是 shanghai
    // 证明他的作用域是 从里往外找
    var city='beijing';
    function f(){
    var city='shenzhen';
    console.log(city);
    }
    function bar(){
    var city='nanjing';
    return f;
    }
    ret=bar(); //调用bar 函数并用ret 接收返回值
    ret(); //执行返回值 得到函数中的值

    //打印结果是shenzhen 则也证明了局部作用域的起效
    var city='beijing';
    function f() {
        var city='nanjing';
        function inner(){
            console.log(city);
        }
        inner();
    
    }
    f();
    //打印的结果是'najing '与Python中的闭包效果是一样的,
    //闭包
    var city='beijing';
    function f() {
        var city='nanjing';
        function inner(){
            console.log(city);
        }
        inner();
    
    }
    f();
    //打印的结果是'najing '与Python中的闭包效果是一样的,调用它的上层而非全局变量中的值

    内置对象和方法

    JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。

    我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。

    自定义对象

    类似于(某方面类似)Python中的字典数据类型

    自定义对象

    类似于(某方面类似)Python中的字典数据类型

    var a = {"name": "Alex", "age": 18};
    console.log(a.name);
    console.log(a["age"]);

    遍历对象中的内容:

    var a={'name':'alex','age':18};
    
    for (var i in a){
        console.log(i,a[i])
    }
    //打印中的内容,i 代表的是对象a中的键,可以用for循环打印出他的键,值

    创建对象:

    var person=new Object();  // 创建一个person对象
    person.name="Alex";  // 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 () {
      /* ... */
    };
    复制代码

    Date对象

    创建Date对象

    //方法1:不指定参数
    var d1 = new Date();
    console.log(d1.toLocaleString());
    //方法2:参数为日期字符串
    var d2 = new Date("2004/3/20 11:12");
    console.log(d2.toLocaleString());
    var d3 = new Date("04/03/20 11:12");
    console.log(d3.toLocaleString());
    //方法3:参数为毫秒数
    var d3 = new Date(5000);
    console.log(d3.toLocaleString());
    console.log(d3.toUTCString());
    
    //方法4:参数为年月日小时分钟秒毫秒
    var d4 = new Date(2004,2,20,11,12,0,300);
    console.log(d4.toLocaleString());  //毫秒并不直接显示

    Date对象的方法:

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

    练习:

    编写代码,将当前日期按“2017-12-27 11:11 星期三”格式输出

    //date对象
    var d=new Date();
    //d,getDay()是获得星期的(从0-6)所以弄一个列表,用获取的数字值和 li 中的星期
    var li=['日','一','二','三','四','五','六'];
    //因为时间的分钟当小于10分钟的时候返回的是一个个位数,需要手动给它前边加一个0, 做如下if
    //判断语句
    var x=0;
    if (d.getMinutes()>10){x=d.getMinutes()}else{x='0'+d.getMinutes();}
    console.log(d.getDay());
    console.log(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '
    +d.getHours()+':'+x+li[d.getDay()]);

    JSON对象

    注意这里与Python 不同的是 调用的时候是 需要 大写JSON

    序列化

    var
    a={'name':'alex','age':15}; //序列化的过程 ret=JSON.stringify(a); console.log(ret,typeof(ret)); //这个打印出来的是字符串格式的 a 和 格式 显示是string console.log(a,typeof(a)); //这个打印的是对象形式的a 显示格式是 object //反序列化的过程 x=JSON.parse(ret); console.log(x,typeof(x)); //这个打印的是对象形式的a 显示格式是 object

    RegExp对象

    //RegExp对象
    
    //创建正则对象方式1
    // 参数1 正则表达式
    // 参数2 验证模式:g(global)和i(忽略大小写)
    
    // 用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。
    
    // 创建RegExp对象方式
    var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g");
    
    // 匹配响应的字符串
    var s1 = "bc123";
    
    //RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。
    reg1.test(s1);  // true
    
    // 创建方式2
    // /填写正则表达式/匹配模式
    var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;
    
    reg2.test(s1);  // true
    
    
    
    // String对象与正则结合的4个方法
    var s2 = "hello world";
    
    s2.match(/o/g);         // ["o", "o"]             查找字符串中 符合正则 的内容
    //会打印出 (3) ["o", "o", "o"]
    // 前边是数量后边是匹配出来的内容当数量大于二时才会有反应
    s2.search(/h/g);        // 0                      查找字符串中符合正则表达式的内容位置

    s2.split(/o/g); // ["hell", " w", "rld"] 按照正则表达式对字符串进行切割 s2.replace(/o/g, "s"); // "hells wsrld" 对字符串按照正则进行替换 // 关于模式:g和i的简单示例 var s1 = "name:Alex age:18"; s1.replace(/a/, "哈哈哈"); // "n哈哈哈me:Alex age:18" s1.replace(/a/g, "哈哈哈"); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配 s1.replace(/a/gi, "哈哈哈"); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不区分大小写

     

     

    Math对象   (调用的时候一定要注意Math.方法() M一定要大写

    abs(x)      返回数的绝对值。
    exp(x)      返回 e 的指数。
    floor(x)    对数进行下舍入。
    log(x)      返回数的自然对数(底为e)。
    max(x,y)    返回 x 和 y 中的最高值。
    min(x,y)    返回 x 和 y 中的最低值。
    pow(x,y)    返回 x 的 y 次幂。
    random()    返回 0 ~ 1 之间的随机数。
    round(x)    把数四舍五入为最接近的整数。
    sin(x)      返回数的正弦。
    sqrt(x)     返回数的平方根。
    tan(x)      返回角的正切。
    //调用的时候要一定要大写 Math 
    console.log(Math.abs(-1));
    //max 中的数字直接以逗号分隔开找其中的小的值
    console.log(Math.max(1,2,3,4));
    console.log(Math.min(-1,0,1,2,3));
  • 相关阅读:
    【笔记】C++自学笔记系列02:类的组合与类的友元
    【windows程序设计】系列02:显示屏幕分辨率
    【笔记】C++自学笔记系列01:基础知识
    【windows程序设计】系列03:窗口与消息
    【windows程序设计】系列04:文本输出
    【Boost】系列05:数值与字符串转换
    【windows程序设计】系列01
    【Boost】系列04:实用技巧之禁止类拷贝构造和赋值
    【gdb】基本操作
    性能测试基本流程介绍(《软件性能测试过程详解与安全剖析》)
  • 原文地址:https://www.cnblogs.com/wangkun122/p/8126728.html
Copyright © 2011-2022 走看看