为什么在 if 条件下外部变量不可用

用户388297
function NumStuff(num) {
    this.num = num;
    this.multipleOfFour = function() {

        //if multiple of 4
        if (this.num % 4 === 0) {
            console.log(this.num + " is a multiple of Four");
            console.log("the structure of the given integer " +
                this.num + " is ");

            for (let i = 0; i < this.num; i++) {
                if (4 * i === this.num) { //why is this.num outside of 
                    //lexical scope
                    console.log(this.num + " = " + i + " x 4");
                    break;
                }
            }
            //if not a multiple of 4
        } else {
            console.log(this.num + " isn't a multiple of 4 but here is the integer's structure:");
            let remainder = this.num % 4;
            let tempNum = this.num - remainder;
            for (let i = 0; i < tempNum; i++) {
                if (4 * i === tempNum) {
                    console.log(this.num + " = " + i + " x 4 + " + remainder);
                    break;
                }
            }
        }
    };
}

let num = prompt("Enter an integer:");
let n = new NumStuff(num);
n.multipleOfFour();

假设我们输入 20 作为我们的数字。它通过 multipleOfFour() 并在有条件的情况下命中第一个。this.num(20) % 4 等于 0 所以它通过了。然后我们循环遍历 i 来找出 4 乘以 20 的次数。 this.num 在 for 语句的范围内,但不在 for 语句的范围内for 语句的内部 if 条件。为什么会这样?

塞尔吉乌·帕拉希夫

它在范围内。这不是问题。

但是this.num是一个stringprompt 总是返回的)4 * i而是一个number而且4 * i === this.num永远是假的,无论你输入什么提示时。

试试这个(这里):

for (let i = 0; i < this.num; i++) {
    console.log('x', 4 * i, this.num, 4 * i === this.num);

一个简单的解决方法是let num = parseInt(prompt("Enter an integer:"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么变量不可用?

来自分类Dev

为什么在此示例中变量范围不可用

来自分类Dev

为什么变量值在循环外不可用

来自分类Dev

为什么线程2不可用?

来自分类Dev

通过API下订单后,为什么我的CallFire电话号码不可用

来自分类Dev

为什么在引导修复UEFI模式下“ GRUB位置”不可用?

来自分类Dev

为什么使用* ngIf时模板局部变量在模板中不可用?

来自分类Dev

为什么我的变量在 AngularJS 承诺的范围内不可用?

来自分类Dev

为什么一半的逻辑分区不可用?

来自分类Dev

为什么getElementById()在Elements上不可用?

来自分类Dev

为什么 Groovy 的日期扩展在 Micronaut 中不可用?

来自分类Dev

为什么隐式类中的函数不可用?

来自分类Python

为什么是Python 3.6.1。pyenv中不可用?

来自分类Dev

为什么SQLiteDatabase.addCustomFunction不可用?

来自分类Dev

为什么 SparkSession 在 Spark2.3 中不可用

来自分类Dev

为什么别名在 /etc/profile 中不可用?

来自分类Dev

为什么NPM在Docker容器中不可用

来自分类Dev

安装postgresql。为什么initdb不可用?

来自分类Dev

为什么Android支持库版本22不可用?

来自分类Dev

为什么原型在简单的JavaScript对象中不可用

来自分类Dev

为什么我的 SendGrid 函数返回“服务不可用”?

来自分类Dev

为什么无符号整数在PostgreSQL中不可用?

来自分类Java

为什么@HeadMapping在Spring MVC中不可用?

来自分类Dev

为什么 BooleanFilter 似乎对我不可用?

来自分类Dev

为什么我使用框架收到不可用的声明

来自分类Dev

为什么ARGeoTrackingConfiguration到处都不可用?

来自分类Dev

为什么以及何时malloc()在C中不可用?

来自分类Dev

为什么模块 python-magic 不可用?

来自分类Dev

为什么“共享按钮”在Ubuntu One中不可用?

Related 相关文章

  1. 1

    为什么变量不可用?

  2. 2

    为什么在此示例中变量范围不可用

  3. 3

    为什么变量值在循环外不可用

  4. 4

    为什么线程2不可用?

  5. 5

    通过API下订单后,为什么我的CallFire电话号码不可用

  6. 6

    为什么在引导修复UEFI模式下“ GRUB位置”不可用?

  7. 7

    为什么使用* ngIf时模板局部变量在模板中不可用?

  8. 8

    为什么我的变量在 AngularJS 承诺的范围内不可用?

  9. 9

    为什么一半的逻辑分区不可用?

  10. 10

    为什么getElementById()在Elements上不可用?

  11. 11

    为什么 Groovy 的日期扩展在 Micronaut 中不可用?

  12. 12

    为什么隐式类中的函数不可用?

  13. 13

    为什么是Python 3.6.1。pyenv中不可用?

  14. 14

    为什么SQLiteDatabase.addCustomFunction不可用?

  15. 15

    为什么 SparkSession 在 Spark2.3 中不可用

  16. 16

    为什么别名在 /etc/profile 中不可用?

  17. 17

    为什么NPM在Docker容器中不可用

  18. 18

    安装postgresql。为什么initdb不可用?

  19. 19

    为什么Android支持库版本22不可用?

  20. 20

    为什么原型在简单的JavaScript对象中不可用

  21. 21

    为什么我的 SendGrid 函数返回“服务不可用”?

  22. 22

    为什么无符号整数在PostgreSQL中不可用?

  23. 23

    为什么@HeadMapping在Spring MVC中不可用?

  24. 24

    为什么 BooleanFilter 似乎对我不可用?

  25. 25

    为什么我使用框架收到不可用的声明

  26. 26

    为什么ARGeoTrackingConfiguration到处都不可用?

  27. 27

    为什么以及何时malloc()在C中不可用?

  28. 28

    为什么模块 python-magic 不可用?

  29. 29

    为什么“共享按钮”在Ubuntu One中不可用?

热门标签

归档