JS之妙用无穷的函数

JavaScript学习笔记



函数的基本使用

当我们需要重复的做某些事情时,为了方便使用,常常会把一些程序代码包装起来,需要的时候直接调用即可,函数的作用就是如此,包装代码方便使用,下面通过一个例子展示下函数的作用:


// 示例:
function sum(a,b){
	return a+b      //输出结果为a,b两数的和,当每次要求两数之和时
}					//只需要调用函数即可,是不是省了很多事呢
console.log(sum(3,4))

一、函数的分类

函数共分为一下几类:

  1. 内置函数,这是由开发人员已经编写好的,我们直接使用即可
    如:Math(数学函数),Date(日期函数)等等
  2. 自定义函数,为了方便自己的使用,我们常常会自定义函数,自定义函数分为有参和无参函数,定义使用也很简单,上面就是自定义函数示例
  3. 匿名函数,这类函数没有名字,需要通过变量,赋值调用等方法使用,匿名函数非常重要,需要好好掌握

二、函数的具体使用

1.内置函数

内置函数是开发人员已经写好的,我们需要直接调用即可,下面介绍一些常用的内置函数

  1. Math: 它是一个内置对象,它拥有一些数学常数属性和数学函数方法,常用的方法如下:
Math.PI----------圆周率(属性)
ceil(数值)-------向上取整,如Math.ceil(6.1)7,Math.ceil(6.9)7
floor(数值)------向下取整,如Math.floor(6.1)6,Math.floor(6.9)6

min(数值1,数值2)-----求两数最小值,如:Math.min(3,5)3,Math.min(5,3)3
max(数值1,数值2)-----求两数最大值,如:Math.max(3,5)5,Math.max(5,3)5
!如果没有给值,返回一个-无穷大数值!

pow(x,y)--------求x的y次方,如:Math.pow(2,3)8,Math.pow(3,2)9
sqrt(数值)-------开平方根,如:Math.sqrt(4)2

round(数值)------四舍五入,如:Math.round(3.3)3,Math.round(3.5)4
abs(数值)--------返回数的绝对值,如:Math.abs(3)3,Math.abs(-3)3

//特别说明
random()--------返回一个0~1的随机数,不包含01
返回两个数(包含)之间的随机数:
function getRandom(min,max){
	return Math.floor(Math.random()*(max-min+1))+min;
}
很好用哦,自己可以记下来
  1. Date:日期函数,也是一个非常常用的函数,与Math不同的是,Date对象的使用必须使用new创建才能使用,常用方法如下:
getYear()-------返回年份数 当前年份-1900//不常用
getFullYear()---返回年份数//常用

getMonth()------返回月份数(0--110表示1getDate()-------返回日期数(1--31getDay()--------返回星期数(0--60表示星期天

getHours()------返回时数(0--23getMinutes()----返回分数(0--59getSeconds()----返回秒数(0--59getMilliseconds()-----返回毫秒数(0--999getTime()-------------返回对应日期基线的毫秒
toGMTString()---------以GMT格式表示日期对象
toLocaleString()------返回日期的字符串表示,
其格式根据系统当前的区域设置来确定

使用示例:

		var d = new Date();//获取当前日期时间
		var year = d.getFullYear(); //获取年份,
		注意:用getYear获取的是当前年份-1900
		var month = d.getMonth() + 1; //获取当前月份,注意要+1
		var day = d.getDate();//获取当前日期(1~31日)
		var hour = d.getHours();//获取小时
		var minute = d.getMinutes();//获取分钟
		var second = d.getSeconds();//获取秒

		console.log(d);
		console.log(year);
		console.log(month);
		console.log(day);
		console.log(hour);
		console.log(minute);
		console.log(second);
		//温馨提醒:在使用日期函数时,常常需要格式化处理,
		//如在一位数时间前面补0
		function addZero(num) {
			return num < 10 ? "0" + num : num
			//定义函数,当时间为一位数时在前面补0
		}

运行结果如图:

在这里插入图片描述


2.自定义函数

系统提供给我们使用的函数毕竟不能解决所有的问题,很多时候都需要我们自己定义函数完成某些特定的功能,语法如下:

function name(参数1, 参数2, 参数3···) {  
    //要执行的代码 
    return 返回值
}
//示例:求两数之和
function sum(a,b){
	return a+b     
}					
console.log(sum(3,4))
下面使用自定义函数写一个简单的计算器,源码如下,做的比较简单,方法不唯一
<body>
    <p>请输入两个数字:</p>
    输入num1<input type="text" name="num1" id="num1" value="">
    输入num2<input type="text" name="num2" id="num2" value="">
    <input type="button" name="add" id="add" value="+" onclick="add()">
    <input type="button" name="reduce" id="reduce" value="-" onclick="reduce()">
    <input type="button" name="multiply" id="multiply" value="*" onclick="multiply()">
    <input type="button" name="except" id="except" value="/" onclick="except()">
    <br>
    输出result:<input type="text" name="res" id="res" value="">
    <script>
        function add() {
            var x = Number(document.getElementById("num1").value);
            var y = Number(document.getElementById("num2").value);
            document.getElementById("res").value = x + y
        }
        function reduce() {
            var x = Number(document.getElementById("num1").value);
            var y = Number(document.getElementById("num2").value);
            document.getElementById("res").value = x - y
        }
        function multiply() {
            var x = Number(document.getElementById("num1").value);
            var y = Number(document.getElementById("num2").value);
            document.getElementById("res").value = x * y
        }
        function except() {
            var x = Number(document.getElementById("num1").value);
            var y = Number(document.getElementById("num2").value);
            document.getElementById("res").value = x / y
        }
    </script>
</body>
//Number(document.getElementById("num1").value)
//通过input中Id属性获取用户输入的值

在这里插入图片描述

通过自定义函数,可以实现很多东西,这就需要我们自己摸索了

3.匿名函数

听名字就知道匿名函数没有名字,不过他的用途可是很大的,使用也比较灵活,实际开发中经常会用到,语法如下:

function (参数1, 参数2, 参数3) {  
    //要执行的代码 
    return 返回值
} 

使用方法:

 1. 通过函数返回值调用
function getAdd() {  
    return function(a, b) {  
        return a + b;  //将匿名函数的结果当做返回值返回给外层函数
        }  			//通过调用外层函数使用匿名函数
}  
var add = getAdd();  
var result = add(1, 2);  
console.log(result);
 2. 通过赋值变量使用
var add = function (a, b) {  
    return a + b  	//通过给变量赋值来调用匿名函数
}  
var result = add(1, 2);  
console.log(result);

三、事件调用

简而言之,事件就是你执行某个操作产生某种结果,如按下灯开关就可以开关灯,按下开关这个动作就是触发了一个事件,调用函数也是一个事件

//设置点击事件,当点击按钮hello时自动调用函数弹出对话框hello
    <button onclick="showHello()">hello</button>
    <script>
        function showHello() {
            alert("hello")
        }
    </script>
下面做一个案例,通过事件调用,简易实现购物计算
结果展示:

在这里插入图片描述
参考源码如下

style样式:td {
            	text-align: center;
      		  }
<body>
    <table border="1" style="border-collapse: collapse;" align="center">
        <th colspan="5">//合并单元格
            简易购物车
        </th>
        <tr>
            <td>商品名称</td>
            <td>数量()</td>
            <td>单价()</td>
            <td>运费()</td>
            <td><button onclick="total()">合计</button></td>
        </tr>
        <tr>
            <td>道具</td>
            <td><input type="text" name="sl" id="sl" value=""></td>
            <td><input type="text" name="dj" id="dj" value=""></td>
            <td><input type="text" name="yf" id="yf" value=""></td>
            <td><input type="text" name="hj" id="hj" value=""></td>
        </tr>
        <script>
            function total() {
                var sl = Number(document.getElementById("sl").value)//通过id属性
                var dj = Number(document.getElementById("dj").value)// 获取用户输入的数值
                var yf = Number(document.getElementById("yf").value)
                document.getElementById("hj").value = sl * dj + yf//计算结果
            }
        </script>
    </table>
</body>

以上就是函数的具体使用,现在来介绍两个特殊的内置函数➡定时器函数


四、定时器函数

  1. setTimeout():用于在指定的毫秒数后调用函数或计算表达式
语法格式:setTimeout("调用的函数名称或表达式",等待的毫秒数)1s==1000ms
使用示例:四种不同的调用方法
//第一种使用方法:调用函数,不加引号,函数不带括号
setTimeout(hello, 3000)			
        function hello() {		//在3秒后弹出对话框hello
            alert('Hello')		//仅填写函数名,不能加(),否则会立即执行 
        }
        
//第二种使用方法:调用匿名函数,不加引号
setTimeout(
           function () {
               alert('hello')
           }, 3000)

//第三种使用方法:调用表达式,需要加引号
setTimeout("alert('hello')", 3000)

//第四种使用方法:调用函数,需要加引号,函数带括号
setTimeout("hello()", 3000)
        function hello() {
            alert('Hello')
        }

小练习:使用 setTimeout()函数实现每秒钟+1的效果

// 参考代码
   <script>
        var i = 0;
        function timeAdd() {
            document.write(i++ + '&nbsp');
            setTimeout(timeAdd, 1000)
        }
        timeAdd();
    </script>

结果如图
在这里插入图片描述


  1. setInterval():按照指定的周期(毫秒)来重复调用函数或计算表达式
语法格式:setInterval("调用的函数名称或表达式",等待的毫秒数)1s==1000ms
使用示例:

使用 setInterval()函数实现每秒钟+1的效果

// 参考代码
      <script>
        var i = 1;
        setInterval(
            function timeAdd() {
                document.write(i++ + '&nbsp')
            }, 1000);
    </script>

结果如图
在这里插入图片描述

可以发现,两种计数器函数都能实现同样的效果,不过它们还是有些不同,setTimeout()多用于延时处理,而setInterval()多用于周期性循环

注意:如果设置了定时器函数,一定要注意清除定时,要不然程序没有关闭的话就会一直消耗系统资源,除了关闭程序,还有下面2种方法清除定时器

  1. clearTimeout():清除 setTimeout()定时器
  2. clearInterval():清除 setrInterval()定时器
    提醒:
    -------setTimeout()产生的定时器会在执行后自动清除,setInterval()产生的定时器不会自动清除
下面用定时器函数写一个倒计时,显示距离明年元旦还剩多少时间,格式为:
距离明年元旦还剩xx天xx时xx分xx秒
//参考代码如下,实现方式不唯一
<h1 id=num style="text-align: center;line-height: 500px;color: aqua;"></h1>
	<script type="text/javascript">
		function addZero(num) {
			return num < 10 ? "0" + num : num//定义函数,当时间为一位数时在前面补0
		}
		function countDown() {
			var nowDate = new Date()
			var inputDate = new Date('2022-1-1 00:00:00')//获取用户输入的日期毫秒数
			var times = (inputDate - nowDate) / 1000//获取秒数
			var day = parseInt(times / 60 / 60 / 24)//获取天数
			var hour = parseInt(times / 60 / 60 % 24)//获取小时
			var minute = parseInt(times / 60 % 60)//获取分钟
			var second = parseInt(times % 60)//获取秒
			var str = "距离明年元旦还剩" + addZero(day) + "天" + addZero(hour) + "时" + addZero(minute) + "分" + addZero(second) + "秒"
			document.getElementById("num").innerHTML = str//通过innerHTML将结果写入到h1标题中
		}
		countDown();
		setInterval(countDown, 1000)
	</script>

结果如图:
在这里插入图片描述


总结

本次笔记主要记录了函数的基本使用以及函数的分类,介绍了内置函数Math,Date的主要方法,并且通过了几个小例子综合应用了函数,拓展了一些小知识,提醒易错的地方,希望在学习中注意细节,搞清楚逻辑,更好地使用函数,越学越深,加油!
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值