ES6-第六天

函数的拓展

  1. 函数参数的默认值,直接写在参数定义的后面
	function fn(a,b,c=3){
        console.log(c) //3
    }
    fn()

	//使用解构赋值的方法传参
	let arr = [1,2,3]
    function fn([a,b,c]=arr){
        console.log(a)  //1
        console.log(b)  //2
        console.log(c)  //3
    }
    fn()

	//length属性的返回值,等于函数的参数个数减去指定了默认值的参数个数
	function fn1(a,b=5){
        //要执行的代码
    }
    fn1(3)
    console.log(fn1.length)  //1

	//函数调用时,参数y = x形成一个单独的作用域。这个作用域里面,变量x本身没有定义,所以指向外层的全局变量x。函数调用时,函数体内部的局部变量x影响不到默认值变量x
	let x = 2
    function fn1(y=x){
        let x = 5
        console.log(y)
    }
    fn1()
  1. rest 参数,形式为(…变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
	const numbers = [6,4,8]
    console.log(...numbers) //6  4  8
    const sortNumbers = (...numbers) =>numbers.sort();
    console.log(numbers.sort())  //[4  6  8]
  1. 严格模式,函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错
		function x(a,b=a){
        'use strict'
        console.log(a)  //Uncaught SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
        console.log(b)
    }
    x(1,2)

	//解决方案,将严格模式写在全局
	'use strict'
    function x(a,b=a){
        console.log(a)  //1
        console.log(b)  //2
    }
    x(1,2)
  1. name 属性
	function fn(){
        //需要执行的代码
    }
    console.log(fn.name)  //fn
  1. 箭头函数
	var fn = () =>{要执行的代码}  fn()
	var fn = (参数) =>要执行的代码  fn()
	var fn = 参数=>{要执行的代码}  fn()
	var fn = () =>{return 5}  fn()
	var fn = () => 5   fn()
	//  箭头函数有几个使用注意点。
	//(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
	//(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
	//(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
	//(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
  1. Function.prototype.toString(),toString()方法返回函数代码本身,以前会省略注释和空格,但现在不会,会一模一样的输出
	function fn(){ /*你好世界*/}
    console.log(fn.toString())  //function fn(){ /*你好世界*/}
  1. catch 命令的参数省略,catch代码块可能用不到这个参数。但是,为了保证语法正确,还是必须写。
	let t = 10
    setInterval(()=>{
        try {
            if(t1<10){
                console.log('小于10')
            }else{
                console.log('大于等于10')
            }
        } catch(error){
            console.log('失败了')  //失败了
        }
    },1000)

	let t = 10
    setInterval(()=>{
        try {
            if(t1<10){
                console.log('小于10')
            }else{
                console.log('大于等于10')
            }
        } catch{
            console.log('失败了') //失败了
        }
    },1000)
	
发布了29 篇原创文章 · 获赞 3 · 访问量 856

猜你喜欢

转载自blog.csdn.net/qq_43756690/article/details/105632115