Uncaught TypeError: XXX is not a function的解决方法

作者在学习JavaScript函数时遇到问题,发现缺少分号导致匿名函数执行出错。通过尝试和调整,理解了分号在函数定义中的重要性,以及匿名函数的立即执行方式。最终列出了四种不同的函数使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在学习JS的时候,在学函数时,发现了一个有点意思的问题:

在网上找了很多方法,无果,毕竟不是每个人的原因都相同。

再回看了一下笔记,对比了一下代码,找到了可疑之处:

上面就是我当时看视频拍下的照片,但是笔记内容没有很完善,当时听课的时候,还是抱着这个之前学过的心态去听的,没想到晚上自己实践之后,就给我当头一棒了。说明,学习心态还是非常重要的,好在才学到60集而已。

下面是我的代码:

let a = +prompt(`请输入第一个数:`)
        let b = +prompt(`请输入第二个数:`)
            // let sum = 0
            // console.log(a, b)

            // 新方法,匿名函数
            (function (a, b) {
                console.log(a + b)
            })(a, b)

突然发现,我的function少了分号,而我上课的时候,发现老师有重点说这个问题,这个分号是必须写的,不然就会报错。于是我在后面加上了分号:

去浏览器运行,发现仍旧是报错的:

然后我就想着会不会是加错地方了,因为错误提示说promp有问题,所以我决定把分号加到function加到前面,如下图:

在浏览器刷新,发现成了:

所以总得来说,是因为我使用了匿名函数中的立即执行方法,本身就是为了验证和加强我的学习理解的,没想到让我写了这么久。

最后,附上我的四种方法:

let a = +prompt(`请输入第一个数:`)
        let b = +prompt(`请输入第二个数:`)
            // let sum = 0
            // console.log(a, b)

            // // 新方法,匿名函数
            // ; (function (a, b) {
            //     console.log(a + b)
            // })(a, b)

            // 第二种方法
            ; (function (a, b) {
                console.log(a + b)
            }(a, b))

            // //传统方法,没有sum
            // function plus(x, y) {
            //     x = x || 0
            //     y = y || 0
            //     console.log(x + y)
            // }
            // plus(a, b)

            // // 传统方法,有sum:
            // function plus(a, b) {
            //     a = a || 0
            //     b = b || 0
            //     sum = a + b
            // }
            // // 先执行这个函数,然后再打印
            // plus(a, b)
            // console.log(sum)
            
            // //注意:    得有返回值,才能将运行结果赋给一个值
            function plus(a,b){
                return a+b
            }
            sum = plus(a,b)
            console.log(sum)

欢迎大家找不同。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值