zoukankan      html  css  js  c++  java
  • 2.7变量、内存、Math和Date的初级认识

    1、变量
    (1)变量的提升
      引例:①.console.log(num1); 报错:没有定义
         ②.console.log(num1); undefind
          var num1=6;
       原因:javascript引擎的工作方式:先解析代码,获取所有被声明的变量。所有的变量的声明语句,都会被提升到代码的头部
       ps:变量提升只对var命令声明的起作用
    (2)变量的作用域
       没有用var声明的写在函数内部的全局变量,只有在该函数被执行时,才是全局变量
       例:① if(ture){var aa='bb'; } console.log(aa);//结果是bb.
         ② for(var i=0;i<100;i++){//...} console.log(i);结果:100
           改写成varj=0; while(j<100){//... j++} console.log(j); 结果:100
           因:if/for声明的是全局变量
    (3)一等公民
       js中的函数与其他数据类型(数字,字符串,布尔值等)处于同等地位,可以使用其他函数的地方就能使用函数
       例如:赋值、传参、作为返回结果等
       将函数赋值给变量:
       var func1 = function(){};

       将函数赋值给对象的属性:
       var people = { ability:null };
        people.ability = function(){console.log("吃");};
        people.ability();//吃

        将函数作为参数传入其他函数:
        function introduce(Func){Func();}
        function sayHello(){console.log(“hello”);}
        introduce(sayHello);//hello

       将函数作为函数的结果返回
        function jiSuan(){ return sum(4,10);}
        function sum(num1,num2){ return num1+num2; } console.log(jiSuan());//14

    (4)函数名的提升

      只有function命令声明的函数才会出现该现象
      qiuHe(1,2);
      function qiuHe(a,b) { console.log(a+b); }//3
      ////////////////////
      qiuHe(1,2);
      var qiuHe = function(a,b){ console.log(a,b); };//qiuHe is not a function
    (5)函数内的变量提升
      在函数作用域中,var命令声明的变量,不管在什么位置,变量声明都会被提升到函数体的头部
      总结:
      作用域之间相互独立,一个作用域中创建的局部变量不能在另一个作用域中生效(一个变量一个作用域)
    (6)*(了解)函数参数的默认值
      function func(num){
      (num!==undefind&&num!==nul)?num=num:num=1;
      return num;
      }
      三目运算符和逻辑判断,实现了当函数参数没有传值的时候给参数赋初值
    2.内存
    (1)【值传递】和【地址传递】
      原始数据类型(数值、字符串、布尔值)的内容传递方式是传递
      而复合数据类型(数组、对象、其他函数)的内容传递是地址传递
    (2)函数的同名参数
      若函数有同名的参数,则取最后出现的那个参数值
      若有两个参数,却只提供了一个参数则第二个参数变为了undefind
    (3)argument对象
      argument对象包含了函数【运行时】的所有参数,能读能写
      argument[0]就是函数的第一个函数,argument[1]是第二个,依次类推
      只有在【函数内部】才可以使用
      ps:虽然argument很像数组,但它是一个对象
    (4)eval函数
      eval()函数,将字符串当作语句来执行
      语法:eval(string)
      【注】只接受【原始字符串】作为参数,若string不是原始字符串,则该方法将不作任何改变的返回
      例:
      eval('var num = 100;');
      console.log(num);// 100
    (5)instanceof类型检测
      用来判断一个变量是否是某个对象的实例,结果为ture||false(typeof检测是是什么类型)
    (6)JS垃圾回收机制
    3、Math对象(JS内置对象)
      Math对象不是构造函数,所以不能生成实例,故所有属性和方法必须在Math对象本身上调用
      ps:提供了一系列的数学常数(属性)和数学方法
    (1)Math对象属性:Math对象的属性表示只读的数学常数(随用随查)
      例:Math.E 常数e
      Math.PI π的值
    (2)Math对象的方法
      【Math.round()方法】:(依据参数的绝对值)四舍五入
      【Math.floor()方法】:返回小于参数值的最大整数(向下取整)
      【Math.ceil()方法】:返回大于参数的最小整数
      【Math.max()方法】:返回最大的参数
      【Math.min()方法】:返回最小的参数
      【Math.ramdom()方法】:返回0~1之间的一个伪随机数
      ps:可能等于0,但一定小于1
      其他补充:
      【三角函数方法】
        Math.sin方法返回参数的正弦
        Math.cos方法返回参数的余弦
        0Math.tan方法返回参数的正切。
        Math.asin方法返回参数的反正弦
        Math.acos方法返回参数反余弦
        Math.atan方法返回参数反正切

        Math.sin(0) // 0
        Math.cos(0) // 1
        Math.tan(0) // 0

      需要注意的用法:
      ①获取min~max之间的值(不包括max)
        function getRandomNumber(min, max) {
        return Math.random() * (max - min) + min;
        }
      ②获取min~max之间的值(包括max)
        function getRandomIntNumber(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min);
        }

     

    4、Date对象
      Date对象是JS提供的日期和时间的操作接口
      JS内部,所有的日期和时间都存储为一个整数。(这个整数是当前时间距离1970年1月1日00:00:00的毫秒数,正负范围为基准时间前后各1亿天)
    (1)Date()函数
      可以被Date对象直接调用,返回一个当前日期和 时间的字符串
      ps:无论有没有参数,直接调用Date总是返回当前时间
    (2)Date(日期字符串|日期参数)构造函数
      Date对象是一个构造函数,对他使用new命令,返回一个Date对象的实例
      【若不加参数,生成的就是代表当前是时间的对象】
        语法:var date1=new Date();
      【若添加一个日期字符串作为参数,返回字符串对应的时间】
      【若添加日期参数,返回字符串所对应的时间】
        语法:var date2=new Date(year,month,day,hours,minutes,seconds,ms);
      【注】月份下标从0开始,年份和月必须写

      一些其他合法的日期字符串写法
      new Date(datestring)
      new Date("2013-2-15")
      new Date('2013/2/15')
      new Date("2013-FEB-15")
      new Date("FEB, 15, 2013")
      new Date("FEB 15, 2013")
      new Date("Feberuary, 15, 2013")
      new Date("Feberuary 15, 2013")
      new Date("15, Feberuary, 2013")
      Sun Jan 06 2013 00:00:00 GMT+0800 (中国标准时间)

    (3)日期运算
      两个日期相减,返回间隔毫秒数;
      两个日期相加,返回连接后的两个字符串;
      结合:setInterval(function(),mstime);定时器来编写限时秒杀活动倒计时
    (4)日期对象的get*系列方法
      getTime():返回实例对象距离1970年1月1日00:00:00对应的毫秒数,等同于valueOf方法
      getDate():返回实例对象对应每个月的几号(从1开始)
      getDay():返回星期几,星期日为0,星期一为1,以此类推
      getYear():返回距离1900的年数
      getFullYear():返回四位的年份
      getMonth():返回月份(0表示1月,11表示12月)
      getHours():返回小时(0-23)
      getMilliseconds():返回毫秒(0-999)
      getMinutes():返回分钟(0-59)
      getSeconds():返回秒(0-59)

     

     

     











    与其苟延残喘,不如从容燃烧!~
  • 相关阅读:
    在Unity3D中开发的Hologram Shader
    在Unity3D中开发的Toon Shader
    在Unity3D中开发的Dissolve Shader
    2017.2.26
    2017.2.21
    2017.2.20
    2017.2.19
    2017.2.18
    2017.2.17<转>
    2017.2.16 linux
  • 原文地址:https://www.cnblogs.com/ilaozhao/p/6574053.html
Copyright © 2011-2022 走看看