js中函数的返回值,及全局和局部变量问题

例1:

    function a(num1,num2){
        var result=num1+num2;
    }
        var result1=a(3,8);
        alert(result1)

结果为:underfined
如果一个函数里面没有return 结果就是undefined

例2:

function a(num1,num2){
    var result=num1+num2;
    alert(result1);
}
    var result1=a(3,8);

结果为:underfined
程序自上向下进行,但var result1为全局变量,会在开头自行声明一个var result1;并且未给其赋值,所以 alert(result1)输出为underfined

例3:

function a(num1,num2){
    var result=num1+num2;
    return result;
    alert(result);
}
    var result1=a(3,8);
    alert(result1)

结果为:11
return result;返回的变量 其实是具体的值,并且函数中遇到return,程序直接结束跳出

例4:

function a(num1,num2){
    var result=num1+num2;
    alert(result);
}
    var result1=a(3,8);
    alert(result1)

结果为:11 underfined,
alert(result)弹出的内容 只是提示结果 不是返回值
如果一个函数里面没有return 结果就是undefined

例5:

   function add(num1,num2){
        var result=num1+num2;
        return result;
    }
    var result1=add(1,2);
    alert(result);
    var reault2=add(2,3);
    alert(result);
    var reault3=add(3,4);
    alert(result);

此时代码提示错误,因为result是局部变量,只在函数内部起作用,跳出函数,其值就被垃圾回收机制GC回收了

例6:

function a(num1,num2){
        result=num1+num2;
        return result;
    }
        var result=a(1,9);
        alert(result);

结果为10
因为此时result为全局变量而不是局部变量
全局变量 声明以后再它的下面 都可以使用
在函数外面用var声明(不用var也行) 函数内部没有var声明的变量 会自动变成全局变量)
局部变量 只能在函数内部使用 不影响外部变量 (函数里面用var声明 和形参)

例7:

  var num=10;
    function a(num){
        alert(num)
    }
    a(100);

此时的结果为100
因为100为形参,而且局部变量 优先 全局变量

注意:

      var num;     //全局变量
      alert(num);  //undefined  声明的变量 没有赋值就是undefined
      alert(m); 	   //m is not defined 报错  没有声明一个变量 直接去使用 就会报错

例8:

    var num = 10;	//全局变量
    function say(num) {	//num是局部变量
        alert(num);   	 //100
        num = 200;	
    }
    alert(num);  //10
    say(100); 	//执行完成以后  函数内部的局部变量 全部会释放,即num=200被释放
    alert(num)  //10

例9:

 var num = 10;		//全局变量	
 function say() {
        alert(num);	//在函数中遇到变量  就要看局部还是全局的  是局部就优先使用 跟全局没有任何关系
        num = 200; 	//此时num为全局变量
    }
    alert(num);	//10
    say();  //10
    alert(num)	//200

例10:

function add(num1, num2, num1) {
        alert(num1);
        return num1 + num2 + num1;
    }
    var result = add(1, 2, 3);    
    alert(result);

结果为3 8
var result = add(1, 2, 3); 此代码的运行默认的在 alert(num1);上加上var num1 =1,num2=2,num1=3;等变量的声明代码,然后开始的num1=1被后来的num3覆盖

例11:

function add(num1, num2, num1) {
        return num1 + num2 + num3;
    }
    var result = add(1, 2, 3);
    alert(result);

结果为有错误,num3 is not be defined
因为参数的设置,默认在函数最前面声明了var num1 =1,num2=2,num1=3,而没有声明num3,就在return中调用了num3,所以会显示错误

例12:

function add(num1, num2, num3) {
        return num1 + num2 + num3;//1+2+undefined
   	 }
var result = add(1, 2);
alert(result);

结果为NaN
因为参数的设置默认在函数最前面声明了var num1 =1,num2=2,num3,num3的为undefined,所以1+2+underfined为错误,提示underfine的是一个变量类型,而不是string

例13:

  function add(num1, num2, num3) {
        return num1 + num2 + num3;
    }
    var result = add(1, "2");
     alert(result);

结果为12undefined
默认在函数最前面声明了var num1 =1,num2=2,num3,num3的为undefined,又因为num2=“2”,为字符串类型,所以加号会对其进行字符串的拼接

例14:

   var num3 = 10;
    function add(num1, num2, num3) {
        return num1 + num2 + num3;
    }
    var result = add(1, 2);
    alert(result);

结果为NAN.
因为函数内部的num3是形参,是一个局部变量,它优先于外部的全局变量num=13,所以它仍然为未被定义的undefined

例15:

    alert(username);
   var username = "leson";

结果为undefined
因为在js中默认为自上而下进行的,但是 var username = “leson”;这句话会使其在最前面默认生成var username;,未被声明具体的值,所以结果为undefined

例16:

   alert(num);		    //undefined
    var num = 10;
    alert(num);			//10
    function say() {
        alert(num);		
        var num = 200;	//此时在函数内部用  var num = 200;声明了一个局部变量,所以会在alert最上面默认生成一个没有定义类型的var num
        alert(num);   		
    }
       num = 300;
       say();			//undefined 	200
 	  alert(num);       //30

例17:

 alert(username);
 let username = "leosn";   //let 局部变量  var 全局变量

结果为username is not defined 错误
因为let禁止其在最开始默认生成var username;

 //let 配合{}可以构建块级作用域
    var  i=100;
    for(let i=1;i<=10;i++){  
    }
        alert(i);

例18:

 const username = "leson";
    alert(username);
    username = "lili";
    alert(username);

结果为一个leson
因为const表示一个常量,值不能进行改变

例:

function add(num1, num2) {
        return num1 + num2;
    }
    const result = add(2, 8);
    alert(result);
    result = 100;
    alert(result);

结果为10

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值