相关疑难解决方法(0)

全局范围内的console.log(!status)产生意外结果

进入一个有趣的问题.我正在努力尝试切换分配给变量的布尔值.它没有用,最终我尝试了这段代码.

var status = false;
console.log(!status);
Run Code Online (Sandbox Code Playgroud)

我希望它能true在控制台中提供,但我得到了false.我认为javascript会首先在括号内运行代码以找到它的值,然后在console.log中运行该值.你能解释一下为什么我没有true在控制台中获得价值吗?

javascript console.log

22
推荐指数
1
解决办法
676
查看次数

使用 `status == true` 时,布尔条件始终为 false

所以我刚开始学习 javascript,我现在在函数模块中,我正在玩它,突然我遇到了一个疑问:

为什么是这样:

if(x==true){
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

与此不同:

if(x){
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

?

你看,我有这个代码:

function isAdult(age){
    if(age >= 18){
        return true;
    }
    return false;
}

function nameAndAge(string, boolean){
    if(boolean == true){

        var my_string = string + " is adult";
        return my_string
    }
    var my_string = string + " is under age";
    return my_string

}

var talisa_age = 22;
var talisa_name = "Talisa Maegyr";

var status = isAdult(talisa_age);

var str = nameAndAge(talisa_name,status);
console.log(str)
Run Code Online (Sandbox Code Playgroud)

无论“talisa_age”值如何,我都会得到以下输出:

"Talisa Maegyr is under age"
Run Code Online (Sandbox Code Playgroud)

但是,如果我将 nameAndAge …

javascript boolean

19
推荐指数
1
解决办法
1564
查看次数

如何避免意外地隐式引用全局对象上的属性?

是否可以在没有with(global)所有脚本默认具有的隐式上下文的情况下执行代码块?例如,在浏览器中,是否可以通过任何方式设置脚本,使诸如

const foo = location;
Run Code Online (Sandbox Code Playgroud)

抛出

未捕获ReferenceError:未定义位置

而不是访问window.location,何时location未先声明?缺少这一点,有没有办法使这种隐式引用导致某种警告?在编写代码时,它可能是错误的来源(见下文),因此有一种防范它的方法可能会很有用。

(当然,由于普通的作用域规则,可以使用constlet或在内部块中声明另一个具有相同名称的变量,以确保使用该变量名称引用的是新变量而不是global属性,但这不是一样。)

这可能类似于询问是否可以从实际 with语句中停止引用属性:

const obj = { prop: 'prop' };
with (obj) {
  // how to make referencing "prop" from somewhere within this block throw a ReferenceError
}
Run Code Online (Sandbox Code Playgroud)

众所周知,with不应该首先使用它,但是不幸的是,当谈到时,我们似乎别无选择with(global),因为它偶尔会节省一些字符,但会浪费一些经常弹出的错误:1 2 3 4 5 6。例如:

(这里的问题:window.status是保留属性-分配给它时,它会将分配的表达式强制转换为字符串)

with阻止或禁止显式使用此类错误的原因相同,但with(global)即使在严格模式下,隐式错误也继续引起问题,因此找出解决方法将非常有用。

javascript scope with-statement

11
推荐指数
1
解决办法
511
查看次数

为什么这个NULL变量真实?

我知道nullfalsy.那它为什么表现得好像呢truthy

var status = null;

console.log('status:', status);

if(!!status) {
  console.log('status is truthy');   // it should not print
}

if(!!null) {
  console.log('null is truthy');   // it should not print
}
Run Code Online (Sandbox Code Playgroud)

javascript browser

9
推荐指数
1
解决办法
201
查看次数

简单的Javascript数组初始化无法在Chrome中运行

我想做一些非常简单的事 - 在Javascript中初始化一个数组.它不适用于谷歌浏览器.这是代码:

status = [];
for(i=0; i < 8; i++)
  status[i]=false;

alert(status.length); //It says 0 when it should say 8
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

javascript arrays google-chrome

7
推荐指数
3
解决办法
2210
查看次数

如果我将变量“close”全局定义为“0”,为什么它会被记录为“false”?

我知道这一定是非常基本的东西,但我不了解范围是如何工作的。我希望closed整个 JavaScript 文件都知道该变量。

\n\n

我有类似的东西(在 jQuery 中):

\n\n
var closed = 0;\n\n$(function(){\n  console.log(closed);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

closed被记录为false. load我用和函数尝试了很多东西onload,但失败了。

\n

javascript variables scope

4
推荐指数
1
解决办法
517
查看次数

FireFox和Google Chrome中的不同JavaScript对象文字行为?

我已将我的错误缩小到以下一组在Google Chrome中产生不同行为的代码:

示例代码:http://jnvxxx.appspot.com/rpc/static_server?key_ = testjs.html

Firefox输出:Hi 1 [object Object] 192 Hi 2

Chrome输出:Hi 1 [object Object] undefined嗨2

任何想法都可以获得谷歌浏览器中的属性.

谢谢.

javascript firefox google-chrome

3
推荐指数
1
解决办法
702
查看次数

比较操作===无法在Chrome上运行?

我不知道为什么,但下面的代码适用于Firefox,但不适用于谷歌Chrome,为什么?这应该是标准的JS.

status = parseInt($('#input-status').val());
// status field is exactly equals to 0
if (status === 0) {
// do something, in Firefox the code reaches here, in Chrome NOT !
}
Run Code Online (Sandbox Code Playgroud)

以下是如何在html中定义#input-status:

<input type="hidden" id="input-status" name="input-status" value="00">
Run Code Online (Sandbox Code Playgroud)

在Chrome中,代码仅在我替换=== by ==时才有效.

有任何想法吗 ?

javascript firefox google-chrome

2
推荐指数
1
解决办法
282
查看次数