Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 警报()未显示_Javascript - Fatal编程技术网

Javascript 警报()未显示

Javascript 警报()未显示,javascript,Javascript,我有一个简单的javascript练习问题,无法显示。我已经收到了其他警报,但我不知道如何正确地调用此警报。非常感谢您的任何帮助或建议 <html> <body> <script> function multa(a, b) { return c; var a = 3; var b = 4; } alert(a * b + "is" + c); </

我有一个简单的javascript练习问题,无法显示。我已经收到了其他警报,但我不知道如何正确地调用此警报。非常感谢您的任何帮助或建议

<html>
  <body>
    <script>
      function multa(a, b) {
        return c; 
        var a = 3;
        var b = 4; 
      }
      alert(a * b + "is" + c);
    </script>
  </body>
</html>

函数multa(a,b){
返回c;
var a=3;
var b=4;
}
警报(a*b+为“+c”);

如果要在函数外部访问变量,必须在外部作用域中声明它们


设a=3;
设b=2;
多功能(a、b){
返回a*b;
}
警报(多个(a、b));

函数multa(a,b){
var c=a*b;
返回c;
}
var a=3;
var b=4;
警报(a+“*”+b+“是”+multa(a,b));

在javascript中,变量声明的范围(一个变量可用多长时间的奇特术语)根据您用于声明变量的关键字(
var
let
const
)而有所不同

为简单起见,
let
const
以类似的方式确定作用域,即它们在定义的块作用域内可用

例如:

for (let i = 0; i < 10; i++) {
  console.log(i);
}

console.log(i); // this will give an error as `i` is available only within the for loop block
吊装后JS对该功能的“解释”如下:

function Test() {
  var i // notice the declaration has moved to the top - which wasn't the case with `let` and `const`
  console.log(i);
  for (i = 0; i < 10; i++) {
    console.log(i);
  }
}
这将被解释为

function multa(a, b) {
    var a; // declaration is hoisted
    var b; // declaration is hoisted
    return c; 
    a = 3;
    b = 4; 
}
alert(a * b + "is" + c);
现在,当JS尝试执行警报时,它找不到变量
a
b
c
,因为它们的范围仅限于在其中声明的函数

所以你需要把这个改成

function multa(a, b) {
    var a; // declaration is hoisted
    var b; // declaration is hoisted
    var c;



    a = 3;
    b = 4;
    c = a * b


    alert("a * b is" + c);
}
变化:

  • return
    语句不是必需的
  • 需要一个变量
    c
  • “a*b”必须用引号括起来,否则你会得到一个警报“12是12”,因为JS将计算a*b

看看你的JS控制台——范围界定很重要。无关:你认为调用这个函数会做什么?你显然是个初学者,所以我能给你的最好建议是,学习如何使用Chrome开发工具,制作代码片段和创建断点。您可以观察代码在每一行中的运行情况,以便更好地了解发生了什么。在这种情况下,您会发现
multa
函数的内部从未发生过,因为您从未调用过该函数,因此
a
b
从未设置过。非常感谢!这真的很有帮助!
function multa(a, b) {
    var a; // declaration is hoisted
    var b; // declaration is hoisted
    return c; 
    a = 3;
    b = 4; 
}
alert(a * b + "is" + c);
function multa(a, b) {
    var a; // declaration is hoisted
    var b; // declaration is hoisted
    var c;



    a = 3;
    b = 4;
    c = a * b


    alert("a * b is" + c);
}