JavaScript语法基础之函数与数组

目录

1. 初识函数

1.1. 函数是什么?

1.2. 函数的定义

1.2.1. 没有返回值的函数

1.2.2. 有返回值的函数

1.2.3. 全局变量与局部变量

1.3. 函数的调用

1.3.1. 直接调用

1.3.2. 在表达式中调用

1.3.3. 在超链接中调用

1.3.4. 在事件中调用

1.4.内置函数

1.4.1.String内置函数

1.4.2.Math内置函数

1.4.3.数组(重点)


1. 初识函数

1.1. 函数是什么?

  • 先来看一段代码:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      var sum = 0;
      for (var i = 1; i <= 50; i++) {
        sum += i;
      }
      document.write("50以内所有整数之和为:" + sum);
    </script>
  </head>
  <body></body>
</html>
  • 大家一看就知道上面这段代码实现的功能是:计算 50 以内所有整数之和。
  • 如果要分别计算:
    • 50 以内所有整数之和
    • 100 以内所有整数之和
  • 那应该怎么实现呢?
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      var sum1 = 0;
      for (var i = 1; i <= 50; i++) {
        sum1 += i;
      }
      document.write("50以内所有整数之和为:" + sum1);
      document.write("<br/>");
      var sum2 = 0;
      for (var i = 1; i <= 100; i++) {
        sum2 += i;
      }
      document.write("100以内所有整数之和为:" + sum2);
    </script>
  </head>
  <body></body>
</html>
  • 为了减轻这种重复编码的负担,编程语言引入了函数的概念。
  • 如果我们想要实现上面 5 个范围内所有整数之和,用函数可以这样实现:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      //定义函数
      function sum(n) {
        var m = 0;
        for (var i = 1; i <= n; i++) {
          m += i;
        }
        document.write(n + "以内所有整数之和为:" + m + "<br/>");
      }
      //调用函数,计算50以内所有整数之和
      sum(50);
      //调用函数,计算100以内所有整数之和
      sum(100);
      //调用函数,计算150以内所有整数之和
      sum(150);
      //调用函数,计算200以内所有整数之和
      sum(200);
      //调用函数,计算250以内所有整数之和
      sum(250);
    </script>
  </head>
  <body></body>
</html>

1.2. 函数的定义

  • JavaScript中,函数可以分两种:
    • 没有返回值的函数;
    • 返回值的函数。
  • 无论是哪一种函数,都必须使用 function 来定义的。

1.2.1. 没有返回值的函数

  • 没有返回值的函数,指的是函数执行完就结束了,不会返回任何值。
  • 语法:
function 函数名(参数1 , 参数2 ,..., 参数n){
    ……
}
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      //定义函数
      function addSum(a, b) {
        var sum = a + b;
        document.write(sum);
       
      }
      //调用函数
      addSum(1, 2);
        
    </script>
  </head>
  <body></body>
</html>

1.2.2. 有返回值的函数

  • 有返回值的函数,指的是函数执行完了之后,会返回一个值,这个返回值可以供我们使用。
  • 语法:
function 函数名(参数1 , 参数2 ,..., 参数n){
    ……
    return 返回值;
}
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      //定义函数
      function addSum(a, b) {
        var sum = a + b;
        return sum;
      }
      //调用函数
      var n = addSum(1, 2) + 100;
      document.write(n);
    </script>
  </head>
  <body></body>
</html>

1.2.3. 全局变量与局部变量

  • JavaScript中,变量有一定的作用域(也就是变量的有效范围)。
  • 根据作用域,变量可以分为以下 2 种:
    • 全局变量
    • 局部变量
  • 全局变量一般在主程序中定义,其有效范围是从定义开始,一直到整个程序结束为止。
  • 局部变量一般在函数中定义,其有效范围只限于在函数之中,函数执行完了就没了。
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      var a = "十里";
      //定义函数
      function getMes() {
        var b = a + "桃花";
        document.write(b);
      }
      //调用函数

      getMes();
    </script>
  </head>
  <body></body>
</html>
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      var a = "十里";
      //定义函数
      function getMes() {
        var b = a + "桃花";
      }
      //调用函数
      getMes();
      //尝试使用函数内的变量b
      var str = "三生三世" + b;
      document.write(str);
    </script>
  </head>
  <body></body>
</html>
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      var a = "十里";
      //定义函数
      function getMes() {
        var b = a + "桃花";
        return b;
      }
      var str = "三生三世" + getMes();
      document.write(str);
    </script>
  </head>
  <body></body>
</html>

1.3. 函数的调用

  • 如果一个函数仅仅是定义而没有被调用的话,则函数本身是不会执行的(认真琢磨这句话,非常重要)。
  • 我们都知道 JavaScript 代码是从上到下执行的,JavaScript 遇到函数定义部分会直接跳过(忽略掉),然后只有遇到函数调用才会返回去执行函数定义部分。

1.3.1. 直接调用

  • 直接调用,是常见的函数调用方式,一般用于没有返回值的函数。
  • 语法:
函数名(实参1, 实参2, ... , 实参n);
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      //定义函数
      function getMes() {
        document.write("听说泰国人很大方,一见面就说:刷我滴卡。");
      }
      //调用函数
      getMes();
    </script>
  </head>
  <body></body>
</html>

1.3.2. 在表达式中调用

  • 在表达式中调用,一般用于有返回值的函数,然后函数的返回值会参与表达式的计算。
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      //定义函数
      function addSum(a, b) {
        var sum = a + b;
        return sum;
      }
      //调用函数
      var n = addSum(1, 2) + 100;
      document.write(n);
    </script>
  </head>
  <body></body>
</html>

1.3.3. 在超链接中调用

  • 在超链接中调用,指的是在 a 元素的href属性中使用javascript:函数名的形式来调用函数。
  • 语法:
<a href="javascript:函数名"></a>
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      function expressMes() {
        alert("我:I Love\n她:爬");
      }
    </script>
  </head>
  <body>
    <a href="javascript:expressMes()">表白对话</a>
  </body>
</html>

1.3.4. 在事件中调用

  • JavaScript 是基于事件的一门语言,像鼠标移动是一个事件、鼠标单击也是一个事件,类似的事件很多。
  • 当一个事件产生的时候,我们就可以调用某个函数来针对这个事件作出响应。
  • 举例:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script>
      function alertMes() {
        alert("Gok,给你初恋般的感觉~");
      }
    </script>
  </head>
  <body>
    <input type="button" onclick="alertMes()" value="提交" />
  </body>
</html>

1.4.内置函数

内置函数: JavaScript 已经封装好的函数, 直接用就可以了。

1.4.1.String内置函数

  • concat: 连接字符串
  • charAt: 根据下标获取字符
  • indexOf: 求对应字符串的下标
  • length:字符长度
  • touppercase:转换大小写
  • subString(start, end): 包前不包后
  • subStr(start, length)
  • replace: 替换字符串
// String 相关
var str = "I like eat chicken!!!";
// 获取某个下标的字符
console.log(str.charAt(0));
console.log(str.charAt(4));
// 得到一个输入的值
str = "你好吗";
if (str.indexOf("吗") != -1){
console.log("输入的值存在铭感字符!");
}
// 字符串长度
var a = str.length;
// 转换大小写
str = "user";
console.log(str.toUpperCase());

// 封装一个函数: ucfirst 将首字母转换成大写?
/**
* 将字符串的首字母转换成大写
* @param str
*/
function ucfirst(str) {
// 获取首字母并转换成大写
var first = str.charAt(0).toUpperCase();
// user
// u ser
return first+str.substr(1);
}
str = ucfirst("user");
console.log(str);

1.4.2.Math内置函数

  • Math.ceil() : 向上取整
  • Math.floor(): 向下取整
  • Math.round(): 四舍五入
  • Math.random(): 伪随机数
// 向上取整
console.log(Math.ceil(7.1));
// 向下取整
console.log(Math.floor(7.9));
// 伪随机数
console.log(Math.ceil(Math.random()*10));
var ran = Math.random() * 10000;
        var num = Math.floor(ran + 1);
        console.log(num);

1.4.3.数组(重点)

看到中括号,马上想到数组

// 定义空数组
var arr1 = new Array("后裔","小卤蛋","虞姬");
console.log(arr1);
// 定义初始化长度的数组
var arr2 = new Array(5);
console.log(arr2);
// 动态初始化数组
var arr3 = new Array("程咬金","亚瑟","孙尚香");
console.log(arr3);
// 用中括号定义
var arr4 = ["后裔","小卤蛋","虞姬"];
console.log(arr4);
// 查看数组的长度
console.log(arr4.length);

数组的下标!!!!!!!!!!!!!!!!!!!!!!!!!!

从0开始

// 获取元素值
arr=['小鲁班','凯']
console.log(arr[0]);
// 修改元素值
arr[] = "李元芳";
console.log(arr);

数组的遍历依次的去查看一遍数组中的每个元素

// 定义空数组
var arr = ["后裔","小卤蛋","虞姬","黄忠", "伽罗"];
// fori的遍历
// 如果数组的元素很多
var len = arr.length;
for (var i = 0; i < len; i++) {
console.log(arr[i]);
}
console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
// for in => 迭代遍历是下标
for (var i in arr){
console.log(arr[i]);
}
console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
// for of => 迭代遍历是元素
for (var value of arr){
console.log(value);
}

数组相关函数

// 定义数组
var arr = ["后裔","小卤蛋","虞姬","黄忠", "伽罗"];
console.log(arr);
// 添加元素在末尾
arr.push("程咬金");
console.log(arr);
// 在数组的头部添加元素
arr.unshift("马可波罗");
console.log(arr);
// 删除最后一个元素
arr.pop();
console.log(arr);
// 删除多个
arr.splice(2, 2);
console.log(arr);
// 插入
arr.splice(1, 0, "小卤蛋","公孙离");
console.log(arr);
// 替换
arr.splice(1, 1, "大卤蛋");
console.log(arr);
console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
// 定义一个数字的数组
var nums = [12,1,55,66,22,3];
console.log(nums);
// 默认的排序是字典序排序,比较字符
nums.sort();
console.log(nums);
// 实际的业务中, 需要升序/降序进行排序
nums.sort(function (a, b) {
return b-a;
});
console.log(nums);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏苏渗透大师

请把钱砸我脸上谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值