• JavaScript基础过关第三天


    JavaScript基础过关第三天

    数组

    • 数组倒序

      • 思路:第一个与最后一个交换,第二个与倒数第二个交换,以此类推,交换次数等于长度除以2的商。
      var array1=[10,20,30,40,50];
      	for(var i=0;i<array1.length/2;i++){
      		var temp=array1[i];
      		array1[i]=array1[array1.length-1-i];
      		array1[array1.length-1-i]=temp;
      	}
      	console.log(array1);
      
    • 冒泡排序

      • 思路:通过两两比较来交换顺序

      • 图示:

      • 比较轮数:长度-1

      • 每一轮的比较次数:长度-1-轮数

      	var array=[10,0,30,60,35];
      	for(var i=0;i<array.length-1;i++){//轮数
      		for(var j=0;j<array.length-1-i;j++){//每一轮比较的次数
      			if(array[j]>array[j+1]){//从小到大的顺序
      				var temp=array[j];
      				array[j]=array[j+1];
      				array[j+1]=temp;
      			}
      		}
      	}
      	console.log(array);
      

    函数

    • arguments伪数组的使用
    function f1(){
        //好处,不用再定义形参从而限制形参个数
        var sum=0;
        for(var i=0;i<arguments.length;i++){
            sum +=arguments[i];
        }
        return sum;
    }
    console.log(f1(10,20,30));//60
    
    • 定义方式
    1. 函数表达
    var f2=function(){//将一个匿名函数给了一个变量
        console.log("这是函数表达式");
    };//这是一个赋值过程,必须加分号
    
    1. 函数声明式

      function f2(){
          console.log("这是函数声明式");
      }
      
    2. 区别

      function f1(){
          console.log("1");
      }
      f1();
      function f1(){
          console.log("2");
      }//只有函数声明式会提前声明
      f1();
      

      相当于

      function f1(){
          console.log("1");
      }
      function f1(){
          console.log("2");
      }
      f1();
      f1();
      

      两次调用结果都会输出2

      f1=function(){
          console.log("1");
      }
      f1();
      f1=function(){
          console.log("2");//函数表达式不会提前声明,所以按照顺序输出
      }
      f1();
      

      先输出1,再输出2

    • 函数作为参数
    function f1(fn){
        fn();
    }
    function f2(){
        console.log("这是函数作为参数的实例");
    }
    f1(f2);//注意这里传入函数名称,而不是函数的返回值(f2())
    
    • 函数作为返回值

      function f2(){
      		return function f3(){
      			console.log("函数作为返回值");
      		}
      	}
      var f1=f2();//f1接收了一个函数
      f1();//调用f1
      
    • 预解析

      变量和函数的声明会提前(赋值不提前),提前到当前作用域的调用者的前面

      f1();
      function f1(){
          console.log(num1);
          var num1=10;
      }
      

      输出:undefined

      如果去掉“var num1=10”,会报错(未声明)

      相当于:

      function f1(){
          var num1;
          console.log(num1);
      }
      f1();
      

      f1();
      var num1=20;
      function f1(){
          console.log(num1);
          var num1=10;
      }//在f1内部也提前了变量声明,同样没有提前变量赋值
      

      输出:undefined

      相当于:

      var num1=20;
      function f1(){
          var num1;
          console.log(num1);
      }
      f1();
      

      f1();
      var num1=20;
      function f1(){
          console.log(num1);
      }//变量声明(num1)和函数声明(f1)提前,但是变量赋值没有提前
      

      输出:undefined


    var num1=20;
    function f1(){
        console.log(num1);
    }
    f1();//不存在提前,顺序调用
    

    ​ 输出:20


    • 思考题

      f1();
      console.log(a);
      console.log(b);
      console.log(c);
      function f1(){
          var a=b=c=9;
          console.log(a);
      	console.log(b);
      	console.log(c);
      }
      

      思考......

    结果:

    上面:a报错 b=9 c=9

    下面: a=9 b=9 c=9

    相当于:

    function f1(){
        var a=9;
        b=9;//b与c前面没有var,所以他们是隐式全局变量
        c=9;
        console.log(a);//9
    	console.log(b);//9
    	console.log(c);//9
    }
    f1();
    console.log(a);//报错(a为局部变量)
    console.log(b);//9
    console.log(c);//9
    
  • 相关阅读:
    TensorFlow进阶(三)---变量的创建、初始化
    TensorFlow进阶(二)---张量的操作
    TensorFlow进阶(一)----张量的阶和数据类型
    TensorFlow入门
    卷积神经网络识别手写数字实例
    解决在win系统下使用DOS命令开启TensorBoard的问题及方法步骤
    TensorFlow------单层(全连接层)实现手写数字识别训练及测试实例
    TensorFlow------TFRecords的读取实例
    TensorFlow------TFRecords的分析与存储实例
    TensorFlow------读取二进制文件实例
  • 原文地址:https://www.cnblogs.com/upxiao/p/9391633.html
Copyright © 2020-2023  润新知