2021-10-03 js函数与变量知识点补充

本文详细介绍了JavaScript中的函数调用方式,包括声明式和赋值式,并讲解了return的作用,如返回数据和终止函数执行。此外,还讨论了函数参数的默认值、argument对象的使用以及系统内置函数的应用。同时,文章阐述了全局变量和局部变量的区别,以及局部变量如何覆盖全局变量。最后,重点解析了JavaScript中的变量提升现象及其原理。

1.函数的两种调用方式:声明式和赋值式
        //函数的两种调用方式
        //声明式
        function fn5() {
            console.log("我是fn5函数");
        }
        //赋值式
        var fn6 = function() { //等号右边是匿名函数,然后赋值给了fn6,所以fn6可以调用它
            console.log("我是fn6函数");
        }
        fn5();
        fn6();
2.return的两个作用
        //return:无条件退出当前方法/当前函数,并返回数据
        //作用:1.返回数据;2.终止程序的执行
        //终止城市的执行例子:
        var fn7 = function() {
            console.log("下雨不出门!");
            return;
            console.log("天转晴了!"); //return后不输出此句
        }
        fn7();
3.函数形参的默认值
        //函数参数的默认值:给形参设置默认值,调用时可以不用给其传参
        var fn8 = function(name, age = 19, sex = "女") {
            console.log("我叫" + name, ",今年" + age + "岁,性别" + sex);
        }
        fn8("susan");
        fn8("Tom", 20, "男");
4.argument
        //argument:函数里没写形参却传入了参数,可以通过argument拿到参数
        //原理:通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数
        function fn9() {
            // 没有写形参,但是传了实参,用arguments接收
            console.log(arguments[0], arguments[1]) //输出1 2
                // return arguments[0] + arguments[1];
        }
        fn9(1, 2, 3, 4, 5, 6); //输出了1 2 
        // console.log(fn9(11, 22)) //33
5.系统函数
        //系统函数
        //字符串->数字
        console.log(Number('11') + 44); //55
        console.log(parseInt('22') + 38); //60
        //判断是否为数字,false是数字,true是非数字
        console.log(isNaN('wreoiugar')); //true,即是一个非数字
        console.log(isNaN(parseInt('33'))); //false,即是一个数字
        console.log(isNaN(Number('33'))); //false,即是一个数字
        //应该注意的是console.log(isNaN('33')); 是false,即认为'33'是一个数字
        console.log(isNaN('33')); //false
        console.log(isNaN(33)); //false
6.全局变量和局部变量
    //全局&局部
    // alert(t);//报错(不弹出)
    // alert('ok');
    // t = 2;//t未声明,执行报错
    // 和
    // alert(t);//弹出undefined
    // alert('ok');
    // var t = 2;//执行到alert(t)时t未被赋值(预编译时声明了t),输出undefined
    //  的区别:
    //函数的调用放在函数的声明之上
    // a();

    // function a() {}
    // var a = function() {}; //没弹出ok
    // alert('ok');
    //原因:a不是函数,执行报错。预编译的时候,声明了变量a = undefined;
    //执行到a()时,a还等于undefined,不是函数,所以执行a()会报错。
7.局部把变量覆盖全局变量(就进原则)
        var num = 11;
        function fn() {
            var num = 22;
            console.log(num); //22
        }
        fn();
        console.log(num); //11
8.变量的提升
//变量的提升
/*
1.什么是变量的提升?
	变量或者函数的声明会在物理层移动到作用域的最前面
2.变量提升的实现原理是什么?
	js的变量和函数声明会在编译阶段放入内存
3.变量提升的目的是什么?
	为了在正式声明一个变量或函数之前就可以使用它
4.了解变量的提升是为了?
	知道编译和执行以及变量的提升,就是为了了解js内部执行的顺序,规避一些常见的错误
*/
//1.
// console.log(a); //undefined
// var a = 123;
//2.
a = 123;
var a;
console.log(a); //123
//例2代码经过编译后变成
// var a;//被提升到当前作用域的最前面
// a = 123;//留在原地等待执行
// console.log(a);
/*编译和执行的区别:
编译分成边一部分和链接部分,编译部分是吧代码转换成二进制语言,连接部分是吧二进制语言组合成可执行文件
即编译是把代码转换成可执行了文件的过程
执行就是把编译出来的文件放到系统中运行的过程,成为程序的运行
比喻:编译就是做饭,运行就是吃饭*/

//*注意函数表达式(匿名函数)不会被提升
//匿名函数的提升例子
// fn3(); //报错,fn3 is not a function
// var fn3 = function() {}
/*
  执行过程:
    var fn;
    fn();
    fn=function(){}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值