js学习笔记二:js函数和作用域

js学习笔记二:js函数和作用域

js函数定义及调用
  1. 函数作用:方便我们封装调用代码。
  2. 函数定义

function fun(){}

var fun=function(){}

var fun=new Function()//这种方式函数会自调用(函数自己完成调用动作)

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style type="text/css">

            #tim{
                width: 100px;
                height: 100px;
                background: red;
                margin: 0 auto;
            }
        </style>
    </head>
    <body>
        <button id="taller" onClick="taller()">增高</button>
        <button id="longer" onClick="longer()">增长</button>
        <button id="changebg" onClick="changebg()">改变背景颜色</button>
        <div id="tim" ></div>
        <script type="text/javascript">
            //获取到要改变的div  id为tim
            var oDiv=document.getElementById('tim')
            //写点击增高的按钮时需要调用的函数
            var taller=function(){
                oDiv.style.height='300px'
            }
            //写点击增长的按钮时需要调用的函数
            function longer(){
                oDiv.style.width='300px'
            }
            //写点击改变背景颜色的按钮时需要调用的函数
            function changebg(){
                oDiv.style.background='black'
            }

        </script>
    </body>
</html>
JS命名规范
  1. 小驼峰命名法:

变量:第一个单词以小写字母开始, 从第二个单词开始的每个单词首字母大写。

函数名:跟变量名一样

常量:全大写单词间用下划线隔开

js中函数的几种写法
  1. function fun(){} 最常见的声明
  2. (function fun(){}) 函数表达式声明方式,只在括号内起作用,外部无法访问。
  3. (function(){}) 匿名函数表达方式,外部无法访问。
  4. new Function() 通过构造器方式,因为麻烦,很少用。
  5. export default function(){} ES6的向外暴露法
  6. ()=>{} 箭头函数
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript">
            function fun(){
                console.log(1)
            }
            (function tail(){
                console.log(2)
            })
            new Function(console.log(3))
        </script>
    </body>
</html>
js中函数的传参和取参
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style type="text/css">

            #tim{
                width: 100px;
                height: 100px;
                background: red;
                margin: 0 auto;
            }
        </style>
    </head>
    <body>
        <button id="taller" onClick="change('height','300px')">增高</button>
        <button id="longer" onClick="change('width','300px')">增长</button>
        <button id="changebg" onClick="change('background','black')">改变背景颜色</button>
        <div id="tim" ></div>
        <script type="text/javascript">
            //获取到要改变的div  id为tim
            var oDiv=document.getElementById('tim')
            //写点击增高的按钮时需要调用的函数
            // var taller=function(){
            // 		oDiv.style.height='300px'
            // }
            // //写点击增长的按钮时需要调用的函数
            // function longer(){
            // 		oDiv.style.width='300px'
            // }
            // //写点击改变背景颜色的按钮时需要调用的函数
            // function changebg(){
            // 		oDiv.style.background='black'
            // }

            function change(styleattr,value){
                //两种写法是一样的,但是如果需要传入变量就需要用第二种
                // oDiv.style.styleattr=value
                oDiv.style[styleattr]=value

            }

        </script>
    </body>
</html>

注意

  1. 对象取值方法有两种,但是如果对象是个变量就要第二种取值方法。
//两种写法是一样的,但是如果需要传入变量就需要用第二种
oDiv.style.styleattr=value
oDiv.style[styleattr]=value
  1. button标签里面的参数一定要加上单引号,因为不加的话js会将它当成是变量。

  2. js如何接收不定参数:不知道传过来多少参数

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
		//利用argument来编写一个求和函数
		function sum(){
			var s=0
			for(var i=0;i<arguments.length;i++){
				s=s+arguments[i]
			}
			console.log(s)
		}
		sum(1,22,3,4)
	</script>
</body>
</html>
js中变量的作用域和闭包
  1. 局部变量只定义在函数内部
  2. 全局变量可以在整个script作用域内都可以调用。
  3. 作用域链:也就是就近原则 当全局变量和局部变量相同时,会自动使用局部变量覆盖全局变量。
  4. 闭包:可以调用函数内部变量的函数。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript">
            function a(){
                var tim =10
                var b=function(){
                    console.log(tim)//此处是闭包
                }
                return b
            }
            a()()//注意这里调用a()返回的是b方法,执行b方法时才会显示出来结果。

        </script>

    </body>
</html>

注意

  1. var b =function(){} 此处的b是个方法,只是定义了一个方法,不是结果,这个方法执行的结果是b()
js中函数的返回值
  1. 用return返回
  2. return代表该函数执行结束,不写return默认会返回undefined
  3. 返回多个值可以将值封装成数组和json对象。
<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            //函数不写返回值会默认返回undefined
            function fun(){
                var tim=10
                var xd=20
                var obj={'tim':tim,'xd':xd}//此处封装成了对象。
                return obj

            }
            console.log(fun())

        </script>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值