JavaScript学习笔记三--语句/数组/函数/作用域

if语句

语法结构

if (条件表达式) {
   //条件成立执行语句
}

三元表达式(简化的if语句)

条件表达式 ? 表达式1 : 表达式2
//如果表达式为真返回1的值,为假返回2

var num = prompt("请输入数据");
var result = num < 10 ? "0" + num : num;  //小于10在数字前加0,否则原数字输出
alert("返回数字为" + result);

//switch()内的值与case内的值是全等(===),必须是值和数据类型一致才可以

//断点调试
F12—sources—文件----某一行设置断点
watch 监视,用于监视变量的值的变化
F11:单步执行

for循环

  例7(打印n行n列的星星(倒着))
      var n = prompt("请输入数字n");
      var str = "";
      for (i = n; i > 0; i--) {
        for (j = 0; j < i; j++) {
          str += "★";
        }
        str += "\n";
      }
      console.log(str);
 //打印九九乘法表
      var str = "";
      for (i = 1; i <= 9; i++) {
        for (j = 1; j <= i; j++) {
          str += j + "x" + i + "=" + i * j + "\t";
        }
        str += "\n";
      }
      console.log(str);

数组

var arr = new Array(); //创建一个新的空数组  用New创建数组
//利用数组字面量创建数组[]
var arr = []; //创建一个空的数组
var arr = [1, 2, "pink", true]; //我们数组里面的数据一定用逗号隔开,可以存放任意类型的数据
//获取数组元素
console.log(arr[1]); //输出2
//数组的遍历  for循环
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}

输出规定样式数组元素

 var str = "";
      var step = "|";
      var arr = ["red", "green", "blue", "pink"];
      for (var i = 0; i < arr.length; i++) {
        str += arr[i] + step; //是+=
      }
      console.log(str);

增加数组元素

 var str = "";
 var arr = ["red", "green", "blue", "pink"];
      console.log(arr.length);
      arr.length = arr.length + 1;
      console.log(arr.length);
      arr[0]='yellow';  //如果索引号所代表数组位本来已经存在元素,则替换
      arr[4]='black'; //如果索引号所代表数组位本来不存在元素,则追加
      arr="white"; //数组元素将便为white  不要直接给数组名赋值,否则里面的数组元素都没有了

冒泡排序

      //例7  数组排序之冒泡排序
      var arr = [5, 6, 7, 0, 1];
      for (var i = 0; i <= arr.length - 1; i++) { //外层循环次数
        for (var j = 0; j <= arr.length - i - 1; j++) {  //内循环,每一趟的交换次数
        //内部交换2个变量的值,前一个和后一个数组元素相比较
          if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
          }
        }
      }
      console.log(arr);

函数

函数就是封装了一段可以被重复执行调用的代码块, 目的:让大量代码重复使用
函数=声明函数+调用函数

// 1.声明函数
function 函数名( ){  function 声明函数的关键字
  //函数体;
}

// 2.调用函数
函数名( );
  1. function 声明函数的关键字,全部小写
  2. 函数是做某件事,函数名一般为动词
  3. 函数不调用时自己不执行
// 可利用函数的参数实现函数重复不同代码
//function 函数名(形参1,形参2...){
     //函数主体
}
函数名(实参1,实参2.....);
  1. 函数的参数可以有,也可以没有,个数不限
  2. 如果实参的个数和形参的个数一样,则正常输出结果;
  3. 如果实参个数小于形参个数,形参可以看作是不用声明的变量 结果就是undefined
  4. 如果实参个数大于形参个数,会取到形参的个数

函数的返回值
函数是用于做某件事或实现某种功能,内部不应有输出语句,最终的结果需要返回给函数的调用者:函数名();是通过return 实现的
只要函数遇到return ,就把后面的结果返回给函数的调用者 。
函数名()=return后面的结果

 function getResult(){
        return 666;
    }
    getResult(); //getResult()=666
    console.log(getResult); //输出666
//例二 利用函数求任意两个数最大值
       function getMax(num1, num2) {
        return num1 > num2 ? num1 : num2;
      }
      console.log(getMax(5, 6));
  1. return 是终止函数,return 后面的语句不会被执行
  2. return 只能返回一个值,如果用逗号隔开,则以最后一个为准,返回的结果是最后一个值,若想返回多个值,则用数组返回
function getResult(num1, num2) {
        return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
      }
      re = getResult(1, 2); //返回的是一个数组
      console.log(re);
  1. 函数如果有return ,则返回的是return 后面的值,如果函数没有return 则返回undefined

break:结束当前循环体
continue:跳出本次循环,继续执行下次循环
return:不仅可以退出循环,还能够返回return语句中的值,同时还可结束当前函数体的代码

函数的arguments的使用
arguments实际是当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参

  1. arguments的展示形式是一个伪数组;
  2. 只有函数才有arguments对象 且是每个函数都内置好了这个arguments
  3. 伪数组并不是真正的数组,但它具有数组的长度属性;
  4. 是按照索引的方式进行存储的
  5. 它没有真正数组的一些方法 pop( ), push( ) 等
  6. 可以按照数组的方式遍历arguments
function fn() {
        console.log(arguments); //里面存储了所有传递过来的实参
        console.log(arguments.length); //返回结果为3
        console.log(arguments[2]); // 返回结果为5
      }
      fn(1, 4, 5);

函数的相互调用
每个函数都是独立的代码块,用于完成相应功能,可以相互调用

//函数的相互调用之 用户输入年份,输出当前年份2月份的天数
      function getDay() {
        var year = prompt("请输入年份");
        var day = 28;
        if (getyear(year)) {
          alert(year + "是闰年有29天");
        } else {
          alert(year + "是平年有28天");
        }
      }

      function getyear(year) {
        var flag = false;
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
          flag = true;
        }
        return flag;
      }
      
      getDay();

函数的两种声明方式

      1.命名函数(常用)
      function fn() {}
      fn();
      2.函数表达式(匿名函数)
      //var 变量名 = function(){ };
      var fun = function (aru) {
        console.log("我是函数表达式");
        console.log(aru);
      };
      fun('好的');
  1. 上述第二种方式中的fun是变量名 ,不是函数名
  2. 函数表达式声明方式与声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
  3. 函数表达式也可以进行传递参数

作用域
作用域即代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突
es6标准

  1. 全局变量:整个script标签,或者是一个单独的js文件,在代码的任何部位都能使用(如果在函数内部没有声明直接赋值的变量也属于全局变量)
  2. 局部变量:(函数作用域),只在函数内部起作用

全局变量只有浏览器关闭的时候才会销毁,比较占内存资源,局部变量当程序执行完毕就会销毁,比较节约内存资源。

js没有块级作用域,js是在es6时新增的块级作用域
块级作用域: { } if{ } for{ }

作用域链

  1. 只要是代码,就至少有一个作用域
  2. 写在函数内部的局部作用域
  3. 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
  4. 根据内部函数可以访问外部函数的这种机制,用链式查找决定哪些数据能被内部函数访问,就称为作用域链。
  5. 就近原则,站在目标出发,一层一层向外查找,最近的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值