
JS 函数
常量 (
发布日期:2021-05-14 16:20:42
浏览次数:20
分类:精选文章
本文共 2027 字,大约阅读时间需要 6 分钟。
JavaScript 函数与变量作用域
定义函数
绝对值函数
function abs(x) { if (x >= 0) { return x; } else { return -x; }}
函数一旦执行 return
语句,函数将结束并返回结果。如果没有执行 return
,函数将执行完毕后返回 undefined
。
匿名函数
var abs = function(x) { if (x >= 0) { return x; } else { return -x; }};
function(x){...}
这是一个匿名函数,但可以通过赋值给变量 abs
进行调用。
调用函数
abs(10); // 返回 10abs(-10); // 返回 10
JavaScript 可以传递任意个参数,也可以不传递参数。
参数问题
JS 可以传递多个参数,如 abs(5, 10)
,但函数只能处理第一个参数。如果想处理多个参数,可以使用 arguments
对象。
function abs(x) { console.log("x:", x); for (var i = 0; arguments.length; i++) { console.log("arguments[" + i + "]:", arguments[i]); } if (x >= 0) { return x; } else { return -x; }}
排除已定义参数
如果需要处理额外的参数,可以使用 rest
参数。
function aaa(a, b, c, ...rest) { console.log(a + " > " + a); console.log(b + " > " + b); console.log("rest:", rest);}
...rest
必须放在 function
参数的末尾。如果要检查是否有额外参数,需确保函数定义的参数后面有 ...rest
。
变量作用域
在 JS 中,var
定义的变量具有作用域。函数内定义的变量在函数体外不可用,即使在相同作用域中。使用 let
和 const
可以避免变量在块外重声明。
function qj() { var x = 1; x = x + 1;}// 在函数体外,x 不存在
同一函数内重复使用相同变量名,不会导致冲突。
function qj() { var x = 1; function qj2() { var x = 'A'; console.log('inner' + x); } console.log('outer' + x); qj2();}
调用后输出为 outerundefined
,说明内部函数会屏蔽外部变量。
全局变量
所有全局变量都会自动绑定到 window
对象上。
x = 1;f = function() { console.log(x);}f();console.log(x); // 输出 1
全局变量会被 window
绑定到-window对象。
var a = 'x';console.log(window.a); // 输出 x
如果全局作用域中存在相同变量,JS 会优先使用全局变量而非函数变量。
局部作用域
let
和 const
从 ES6 起可用,避免变量在块外重声明。
function aaa() { for (let i = 0; i >= 100; i++) { console.log("i > " + i); } console.log(i + 1); // 正常工作,因为 for 循环已声明 let i}
在父级或钻紧作用域中,如果变量未声明,会抛出 ReferenceError
。
常量 (const
)
在 ES6 中,const
可以定义不可变的常量。
var PI = 3.14;console.log(PI); // 3.14PI = 123;console.log(PI); // 123
与此同时,const
也可用于定义常量。
const Bali = '一个未改变的值';Bali = 'Bali.book'; // 变更不可能
const
可用于字符串、数值、对象等类型,但也可以重复声明表达式结果。
总结
JS 的函数定义方式多样,参数处理灵活,变量作用域有明确规则。理解这些概念 有助于编写 有效、可维护的代码。
发表评论
最新留言
很好
[***.229.124.182]2025年05月25日 03时51分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MFC打印和打印预览功能
2025-04-14
MFC打造Java环境变量设置工具...
2025-04-14
MFC数据类型
2025-04-14
MFC显示JPG图片
2025-04-14
MFC模态对话框和非模态对话框
2025-04-14
MFC调用DOS窗口显示信息
2025-04-14
mha高可用
2025-04-14
MHA高可用架构与Atlas读写分离
2025-04-14
Miaoo朋友圈程序全完整版源码
2025-04-14
MicroJob 任务注册中心添加 Nacos 支持,升级 0.0.3 版本
2025-04-14
Microsoft AI-System 开源项目教程
2025-04-14
Microsoft Project Acoustics 开源项目教程
2025-04-14
Microsoft Security Updates API 使用教程
2025-04-14
Microsoft SQL Server 2000收缩MDF数据
2025-04-14
Microsoft SQL Server 2005 提供了一些工具来监控数据库
2025-04-14
Microsoft Store 里面应用没有获取和安装按钮,无法安装应用 怎么办?
2025-04-14
Microsoft Windows XP SP3安装测试手记
2025-04-14
Microsoft.CSharp.targets不存在解决方法
2025-04-14