function 函数传参,不定参,return返回值

本文介绍JavaScript中函数传参的基本概念,包括形参、实参及不定参数的使用方法,并通过示例展示了不定参数求和的过程。此外,还讨论了函数返回值的重要性以及getComputedStyle方法在获取元素计算样式方面的应用,最后给出了一个处理浏览器兼容性的示例。

函数传参:

function fn(形参){

console.log(形参);

}

fn(实参);

不定参: arguments

arguments: 不定参  函数的所有参数的集合 数组形式

只能在函数中使用

类似数组,保存实际传入的参数的集合

拥有length属性

可用下标获取实际参数中对应的值

举个栗子``��:

function fn(){

console.log(arguments);

}

fn(1,2);

不定参求和 栗子``��;

function fn(){

var num = 0;

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

num += arguments[i];

}

console.log(num);

}

fn(1,2,3,4,5,6);

函数返回值:(return)

当我们需要在函数外边拿到函数执行的结果时,就需要使用函数返回值;

为什么使用函数返回值:—方便函数复用

函数执行完成后都有返回值

不使用return默认返回值为undefined

使用return 返回值为return后面的值

return的一些问题:

1,return只能用在函数中;

2,在函数中 return后面的代码就不再执行了;

getComputedStyle():获取计算后样式

getComputedStyle(要获取样式的元素)["样式名"];

1. 颜色值 拿到的是 rgb样式

2. getComputedStyle只能获取 不能设置

3. IE6.7.8不支持 getComputedStyle

要获取样式的元素.currentStyle["样式名"];

1. 不能获取复合样式

2. 只兼容IE8包含IE8之前的IE浏览器

处理兼容问题方法:

<style type="text/css">

#box {

width: 100px;

height: 100px;

background: red;

}

</style>

<script type="text/javascript">

function $(id){

return document.getElementById(id);

}

function css(el,attr){

if(el.currentStyle) {

return el.currentStyle[attr];

}

return getComputedStyle(el)[attr];

}

window.onload = function() {

var box = $("box");

alert(css(box,"width"));

};

</script>

</head>

<body>

<div id="box"></div>

</body>

</html>

### 获取 `setTimeout` 返回值的方法 在 JavaScript 中,`setTimeout()` 函数会立即返回一个计时器 ID,而是等待回调函数执行完毕后的返回值。因此,无法直接获取由 `setTimeout` 的回调函数返回的值。 为了处理这种情况,通常有两种方式来间接获得所需的结果: #### 使用全局变量存储结果 可以通过定义一个外部作用域内的变量,在 `setTimeout` 的回调中修改此变量的值。这样可以在稍后访问该变量以取得计算结果。 ```javascript let result; function performComputation() { setTimeout(() => { // 执行某些耗时操作... result = "Operation completed"; console.log("Inside timeout:", result); }, 1000); } performComputation(); // 需要延迟一段时间才能读取result console.log("Outside timeout before delay:", result); setTimeout(() => { console.log("Outside timeout after delay:", result); }, 2000); ``` 这种方法简单易懂,但在实际应用中可能够优雅,特别是当涉及到更复杂的逻辑或并发情况时[^1]。 #### 利用 Promises 封装异步行为 更好的做法是利用 ES6 引入的 Promise 对象来封装 `setTimeout` 调用,从而允许链式调用 `.then()` 来接收最终完成的状态。 ```javascript function asyncOperationWithTimeout(value, ms) { return new Promise(resolve => { setTimeout(() => resolve(`Resolved with ${value}`), ms); }); } asyncOperationWithTimeout(42, 3000).then(response => { console.log(response); // 输出:"Resolved with 42" }); ``` 这种方式仅使代码更加清晰可维护,还能够更好地与其他基于 promise 的 API 进行集成,比如 fetch 请求或其他库提供的功能[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值