Javascript 将变量分配给警报

Javascript assign variable to alert

本文关键字:分配 变量 Javascript      更新时间:2023-09-26

我想知道你能分配一个变量来提醒吗? 它的真正含义和作用是什么?例如

var a = alert('test');  

我尝试了一下,一旦页面加载,当我调用它时,变量a仍然'undefined',就会弹出警报。我们不是应该使其成为一个匿名函数,里面有警报吗

var a = function(){ alert('test'); }

如果我们想触发某事警报?为什么javascript允许你这样做?

var a = alert('test');

将此语句视为任何其他变量赋值。为了执行分配,首先评估右侧。在本例中,它是一个函数调用,因此调用该函数并获取其返回值。在警报的情况下,返回值为 undefined 。它不会返回任何内容。

然后将返回值分配给 a ,因此a以值 undefined 结束。

作为该语句的副作用,将显示一条警报消息。这是调用 alert(( 并获取其返回值的结果。

function foo(x) {
    return x * 2;
}
var a = foo(3);

此代码在结构上类似于警报调用,将导致a为 6。但是 alert(( 不返回值。更像是这样:

function bar(x) {
    return;
}
var a = bar(3);

现在a undefined.

var a = alert('test');  

这表示执行alert('test')并将该函数的返回值分配给名为 a 的变量。

这与

var max = Math.max(1,2,3,4);

其中max最终会将其中的值4作为执行Math.max(1,2,3,4)的返回值。


var a = function(){ alert('test'); }

这表示声明一个匿名函数并将该函数对象分配给变量 a 。 由于该函数刚刚声明,因此此时不执行。 您可以在将来使用 a() .

你评论说:

我只是想知道为什么javascript允许我们这样做,如果它没有任何意义

好吧,JavaScript(以及任何其他语言,包括英语(允许你做很多没有任何意义的事情,只要语法有效。例如,下面的片段也没有任何意义:

var a;
a = a; // so what?
function something() { /* nothing */ }
var b = something(); // very similar to your example!

如果您可以从某些功能进行分配,但不能从其他功能进行分配,那不是不太一致吗?如果输入了语言,则会产生错误,但既然不是,那有什么问题呢?如果它们不返回值,则返回值undefined,并且如果您尝试将其分配给变量,则不会中断任何内容。因此,您可以创建有时返回某些内容,有时不返回的函数。如果使用得当,这可能是一个优势。这是一个功能,而不是语言的问题。

如果你这样做:

 var a = function(){ alert('test'); }

然后,您可以执行以下操作:

a();

既然你已经定义了一个匿名函数。

警报是一个函数,因此您本身无法为其分配任何内容。

如果你想在变量有值时弹出一些东西,你可以做一些事情,比如 -

$(document).ready(function() { 
  if (someVar != undefined) {
    alert(someVar);
  }
});