函数的参数算不算一个变量,为什么在传参的时候不需要去声明变量呢?

函数的参数算不算一个变量,为什么在传参的时候不需要去声明变量呢?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>首字母变大写</title>

</head>

<body>

<script>

    var newStr="";

    var str="all time is no time when it is past";

    function toFirstUpper(str){

        var arr=str.split(" ");

      

        for(var i=0;i<arr.length;i++){

            var word=arr[i];

            var firstStr=word.charAt(0);

            var toUpper=firstStr.toUpperCase()+word.substr(1);

            newStr+=toUpper+" ";

        }

    

    

    return newStr;

    }

    document.write(str+"<br/>");

    document.write(toFirstUpper(str));

</script>

</body>

</html>

本题的代码已经实现,但是函数在传参的时候,参数肯定是从调用的地方获取的,我试了下直接输出参数str是会报错的,也就是说在使用传参的时候,必须为实实在在的数据类型的数据,而这个数据是不需要实现声明参数的变量来获取,但是要用document.write(参数名)是会报错的,要想不报错,需要提前提前给参数赋值,从这里看函数传参和对对参数的声明赋值是不同的,我的理解是传参只是将参数指向了你传入的参数数据实际存放的地址,但是解释不过完美,请问老师,函数的传参到底是个什么机制,和对参数声明变量赋值有什么区别

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Miss路 2018-05-03 15:34:22

1、参数实质的用意就是将函数外面的值,传递到函数中,可以理解为值之间的传递。

2、这里涉及到变量作用域的一些深入内容。目前你可以这么理解,参数就是局部变量,不能在方法外去访问,在方法中写document.write(参数名)是可以的,但是在外面就不可以,如下图写法就是可以的:

http://img1.sycdn.imooc.com//climg/5aeab98f0001da1104940201.jpg

你的代码中的输出第一个是输出的全局作用域中的str,它并没有进入到函数中去做转化,而第二个输出是你调用了转化的方法,并且将参数传进来, 并做了一系列的操作。


  • 提问者 慕盖茨6742792 #1
    这个参数在内部使用的话,也不需要在函数内部进行变量声明么
    2018-05-03 15:39:09
  • 提问者 慕盖茨6742792 #2
    看到了,也是需要声明才能使用,唯一就是参数传递是不需要生命的,直接就可以
    2018-05-03 15:40:03
  • Miss路 回复 提问者 慕盖茨6742792 #3
    你可以这么理解,参数在方法名后面的小括中写过之后就可以直接使用了,这里就相当于声明过了。
    2018-05-03 15:44:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师