JavaScript语法基础(函数、对象、常用类)

一、函数

JavaScript 使用关键字 function 定义函数。

函数可以通过声明定义,也可以是一个表达式。

调用又分为有无返回值的调用

onclick:点击

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的函数</title>
</head>
<body>
    <script>
        function calculator(a, b)
        {
            c = a+b;
            alert("a+b=" + c); 
            return c;        
        }
        // 1. 在JS程序中被调用 (包括有返回值和无返回值的调用)
        // console.log("a+b=" + c)
    </script>

    <!-- 2. 在按钮或超链接被点击时调用(监听点击事件) -->
    <!-- 2.1 监听按钮点击 -->
    <input type="submit" value="计算a+b的和" onclick="calculator(1,2)" />
    <br>
    <!-- 2.2 监听超链接点击 -->
    <a href="#" onclick="calculator(3,4)">百度一下,你就知道</a>
</body>
</html>

函数又分为全局变量以及局部变量

全局变量:常常定义在函数外部,拥有全局作用域,即在 JavaScript 代码的任何地方都可以访问。

局部变量:定义在函数内部,只能在函数中使用的变量,作用范围是从函数开始到结尾,即在{}里。

在函数内声明的变量只在函数体内有定义,即为局部变量,其作用域是局部性的。需要注意的是,在函数体内声明局部变量时,如果不使用 var 关键字,则将声明全局变量。

  <script>

        var c=1;  //全局变量,既可以作用于所有函数内,又可以作用于函数外

        function calculator1(a,b)
        {   
            var d=2;     //局部变量,只作用与函数内
            return (a+b+c)*d;  //返回6
        }

        rlt1 = calculator1(1,1)
        console.log("计算结果为:" + rlt1)

        rlt2 = (1+1+c)*d      //函数外无法调用局部变量d,控制台报错 
        console.log("计算结果为:" + rlt2)

 
    </script>

可以看到只作用在函数内的局部变量无法在局部外调用,所以控制台会报错

二、对象

1、可以直接手动定义一个对象

 <script>

     
        var person = {
            firstName:"毛",
            lastName:"主席",
            age:83,
            eyeColor:"黑色",
            getName: function(){
               
             
                allName = this.firstName + this.lastName;
                return allName;
            },
            cal: function(a,b){
                return a+b;
            }
        };

 注意this对象的使用(指向自身),如果没有this,直接用属性名控制台会报错

2、也可以直接使用定义好的属性和方法

 <script>

 
        var person = {
            firstName:"毛",
            lastName:"主席",
            age:83,
            eyeColor:"黑色",
            getName: function(){
            allName = this.firstName + this.lastName;
            return allName;
            },
            cal: function(a,b){
                return a+b;
            }
        };
        // 2.使用定义好的对象的属性和方法
        console.log(person.eyeColor)  //使用对象的属性
        console.log(person.getName()) //使用对象的方法
        console.log(person.cal(1,2))  //使用对象的方法
 
    </script>

三、常用类

1.JS的内置类Array

JavaScript 数组是可调整大小的,并且可以包含不同的数据类型。(当不需要这些特征时,可以使用类型化数组)

JavaScript 数组不是关联数组,因此,不能使用任意字符串作为索引访问数组元素,但必须使用非负整数(或它们各自的字符串形式)作为索引访问。

JavaScript 数组索引从0开始:数组的第一个元素在索引 0 处,第二个在索引 1 处,以此类推,最后一个元素是数组的 length属性减去 1 的值。

1. length属性返回数组的元素个数(数组长度)

2. push方法用于在数组末端添加一个或多个元素,并返回

添加新元素后的数组长度。注意:该方法会改变原数组!

3. pop方法用于删除数组最后一个元素,并返回被删除的那个元素。

 注意:该方法会改变原数组!

4. reverse方法用于颠倒排列数组元素,返回改变后的数组。

注意:该方法会改变原数组!

5. indexOf方法返回给定元素在数组中第一次出现的位置,若未出现返回-1

 <script>
       
        var persons=new Array("毛泽东","邓小平","江泽民");
        console.log(persons.length);    // 3

        var persons=new Array("毛泽东","邓小平","江泽民");
        len = persons.push("胡锦涛");
        console.log('新数组为:' + persons +'->长度为:' + len);  

        var persons=new Array("毛泽东","邓小平","江泽民");
        p = persons.pop("胡锦涛");
        console.log('新数组为:' + persons +'->被移除的元素为: ' + p); 
  
        var persons=new Array("毛泽东","邓小平","江泽民");
        p = persons.reverse();
        console.log(p); 

        var persons = new Array("毛泽东","邓小平","江泽民");
        console.log(persons.indexOf("邓小平"));  //1
        console.log(persons.indexOf("胡锦涛"));  //-1          
    </script>

2.JS的内置类String

字符串

1. length属性返回字符串的长度

2. charAt方法返回指定位置的字符

3. concat方法用于顺序连接多个字符串,返回一个新字符串(不改变原字符串)

4. indexOf 方法用于确定一个字符串在另一个字符串中第一次出现的位置,

返回结果是匹配开始的位置。如果返回-1表示不匹配。

5..split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组

 <script>
        var s = 'hello';
        console.log(s.length) // 5
      
        var s = new String('hello'); 
        console.log(s.charAt(1));            // "e"
        console.log(s.charAt(s.length - 1)); // "o"
        console.log(s.charAt(10));           // ""  索引超出返回空字符串
   
        var s1 = new String('hello'); 
        var s2 = new String(' world'); 
        console.log(s1.concat(s2));          // "hello world"
        console.log(s1.concat(s2, ' hi', ' beijing')); // "hello world hi beijing"
   
        var s = new String('hello world'); 
        console.log(s.indexOf("world"));  //6
        console.log(s.indexOf("hi"));     //-1
  
        var s = new String('hello world hi beijing'); 
        console.log(s.split(' ')); // 按照空格分割 ['hello', 'world', 'hi', 'beijing']
    </script>

3、JS的内置类Math

Math是JavaScript内置类,通过其内部的类方法,提供了各种数学功能

1. abs方法返回参数值的绝对值

2. max和min方法返回参数值的最大值和最小值

3. floor和ceil对参数向下取整和向上取整

4. random返回[0,1)之间的一个伪随机数

5. 保留小数点指定位数(直接当成固定函数使用)

   <script>
        console.log(Math.abs(1)) // 1
        console.log(Math.abs(-1)) // 1

        console.log(Math.max(1,2,3)) // 3
        console.log(Math.min(1,2,3)) // 1

    
        console.log(Math.floor(3.3)) // 3
        console.log(Math.floor(-3.3)) // -4
        console.log(Math.ceil(3.3)) // 4
        console.log(Math.ceil(-3.3)) // -3

      
        for (var index = 1; index <=5; index++)
        {
            console.log(Math.random())
        }
        // 随机输出任意范围的某个数(直接当成固定函数使用)
        function getRandomInRange(min, max) 
        {  
            return Math.random() * (max - min) + min;  
        }  
        console.log(getRandomInRange(1, 20)); //随机输出1到20的某个数


        function truncateDecimalPlaces(num, decimalPlaces) 
        {  
            let factor = Math.pow(10, decimalPlaces);  
            return Math.floor(num * factor) / factor;  
        }  
        console.log(truncateDecimalPlaces(3.14159, 2)); // 输出 3.14

    </script>


 


4.js的内置类Date

 // 基于Date类,创建一个对象示例,表示当前日期和时间  
        const now = new Date();       
        // 获取年份(四位数的年份,比如2024)  
        const year = now.getFullYear();    
        // 获取月份(从0开始,所以0表示1月,11表示12月,需要加1才能得到实际月份)  
        const month = now.getMonth() + 1;      
        // 获取日期(月份中的哪一天)  
        const day = now.getDate();  
        // 获取小时(24小时制)  
        const hours = now.getHours();     
        // 获取分钟  
        const minutes = now.getMinutes();     
        // 获取秒  
        const seconds = now.getSeconds();  
        // 输出当前未格式化的日期和时间 
        console.log(`当前日期和时间: ${year}-${month}-${day} ${hours}:${minutes}:${seconds}`);

也可输出格式化后的时间


        const formattedDate = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;  
        const formattedTime = `${hours < 10 ? '0' : ''}${hours}:${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;      
        // 输出当前格式化后的日期和时间  
        console.log(`当前日期和时间: ${formattedDate} ${formattedTime}`);

 格式化日期和时间字符串  
 如果month小于10,它会在month前面插入一个'0',否则插入一个空字符串''。
这样做的目的是确保月份始终是两位数(例如,1月变为01)。

 同理,${day < 10 ? '0' : ''}${day}确保日期也是两位数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值