优艾设计网

js中函数的参数传递是值传递还是引用传递?怎么判断参数的类型? 财富值8?

function initarr(n){ var arr = []; for(var i=0;i<n;i++){ arr[i] = parseFloat(prompt("第"+(i+1)+"个数")); } return arr; } function sumAndAvg(arr){ var sum = 0; var avg = 0; for(var i in arr){ sum = sum+arr[i]; } avg = sum/arr.length; document.write("sum = "+sum); document.write("avg = "+avg); }

一个简单的函数,比如我在此刻定义一个
var a = 10;
sumAndAvg(a);
实际函数是想要一个数组的参数的,但是这种情况下怎么判断穿进去的参数是什么类型?
这样的设计有什么优点或者有什么缺点应该怎么克服呢?优艾设计网_PS百科


香水有毒坐看云海把昨日还给我前 优艾设计网_设计 2022-09-21 09:00

原生不检查参数类型,这是由于js是弱数据类型的语言。一般情况下,js作为浏览器端的支持的时候,输入参数类型是写代码的人预先就想好的了,所以一般不会出现这种问题。但是如果涉及用户输入或者交互产生数据的时候,就有可能会出现题主的情况。做法就是通过自定义方法判断数据类型之后在进行处理。下面是几个类型判断的方法,抛砖引玉:


gallops 优艾设计网_PS交流 2022-09-21 09:01

js无法指定函数参数的类型,你如果想限制参数为array的话,就必须在函数内部判断 Array.isArray(arr)。


一片寂静xiaohuizi蝶霜 2022-09-21 09:01

这里的参数arr后面冒号部分就是flow.js加的类型约束,这样我们可以强制调用的时候使用数组。然后运行flow做运行检查,就会提示类优艾设计网_电脑技术型不匹配


小丫头_053 2022-09-21 09:05

优艾设计网_PS问答

这个是动态类型语言无约束带来的问题,JS本身无法解决这个问题,你可以使用微软出的TypeScript语言,它带有类型系统,编译结果是JS。


54321你 2022-09-21 09:06

优艾设计网_PS百科

这样我们可以在开发时检查类型,在生产环境下去除。


六合霸主 优艾设计网_设计客 2022-09-21 09:09

所以题主这样就好了:


0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜