Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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,我在w3schools.com上工作,我通常会阅读代码,理解代码行的作用,我对这段代码有点困惑: function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "empty"; i

我在w3schools.com上工作,我通常会阅读代码,理解代码行的作用,我对这段代码有点困惑:

function myFunction() {
 var message, x;
 message = document.getElementById("message");
 message.innerHTML = "";
 x = document.getElementById("demo").value;
 try { 
    if(x == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
 }
 catch(err) {
    message.innerHTML = "Input is " + err;
 }
}

第一行是否同时声明变量message和x?第二行有意义,但第三行是否声明未定义?第四行具体做什么?

第一行声明消息和x变量。我不知道声明undefined是什么意思,但第三行将message元素的内容(内部HTML)设置为空字符串。最后一行将demo元素的value属性设置为x。value属性包含默认值或用户在文本字段中键入的值(或脚本设置的值)

第1行:您可以在单个var语句之后声明(并可选地为其赋值)多个变量,以逗号分隔

第3行:正在将对象“message”上的innerHTML的“property”设置为空字符串

注意:第2行返回的对象“message”已经具有string类型的属性“innerHTML”(如果id=“message”的元素存在),因为它是一种特定类型的对象(HtmleElement),但一般来说,您可以将任何值分配给对象上以前未定义的属性,并且它将创建该属性。例如:

var obj = {}
alert (typeof obj.newproperty) // undefined
obj.newproperty = "hello"
alert (typeof obj.newproperty) // string
第4行:

document.getElementById("demo")
是对id为“demo”的元素的引用

将变量x设置为该元素上属性“value”的值(如果存在,或如果不存在,则设置为未定义)

注意:如果不存在id=“demo”的元素,那么该行将在尝试引用空对象上的属性(值)时抛出错误。

function myFunction(){
function myFunction() {
  var message, x; // declarations separated by a comma - end declarations with ;
  message = document.getElementById("message"); // assignment of an Element (which is an Object) to var message
  message.innerHTML = ""; // assignment to the Element's innerHTML property which writes inside the HTML Element itself - won't work on inputs (use .value)
  x = document.getElementById("demo").value; // assign the demo input value to var x
  try { // try things and send to catch if throw occurs
    if(x == "") throw "empty"; // == is a truthy test use === for more accuracy
    if(isNaN(x)) throw "not a number"; // not numeric-ish - isNaN() works on strings too
    x = Number(x); // cast var x to a number - could also be done like x = +x;
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) { // err argument receives throw if there is an error
    message.innerHTML = "Input is " + err; // assign
  }
}
var message,x;//用逗号分隔的声明-结束声明,带; message=document.getElementById(“message”);//将一个元素(它是一个对象)赋值给var message message.innerHTML=“;//对写入HTML元素本身内部的元素innerHTML属性的赋值-对输入无效(use.value) x=document.getElementById(“demo”).value;//将demo输入值分配给var x try{//尝试事物,如果发生抛出,则发送到catch 如果(x==“”)抛出“空”;//==是真实的测试,请使用===以获得更高的准确性 if(isNaN(x))抛出“非数字”;//非数字ish-isNaN()也适用于字符串 x=Number(x);//将变量x转换为一个数字-也可以像x=+x一样执行; 如果(x<5)抛出“过低”; 如果(x>10)抛出“太高”; } catch(err){//err参数在出现错误时接收throw message.innerHTML=“输入为”+err;//分配 } }
@AndrewLi only它没有将
消息
初始化为空字符串。在第二行,ID为“message”的HTML元素被分配给
message
变量。在第三行,前面提到的元素的HTML值被设置为空字符串。“无论如何,它仍然存在-
message
被重新分配给空字符串”-不,不是。
message
引用的HTML元素的
innerHTML
属性被设置为空字符串,从而清除该元素的所有内容。@CBroe。我瞎了。是的,
innerHTML
属性被分配给一个空字符串。@AndrewLi,请查看提供的代码
message
是a(n)的实例(只要ID为“message”的元素存在)。在第三行,
message
变量的
innerHTML
属性被设置为空字符串,从而清空页面上元素的“html值”。我强烈建议您学习浏览器附带的开发工具(按F12键)。每个浏览器都为各个部分指定了不同的名称,但在Chrome的“查找到源”选项卡下。然后学习如何设置断点和单步执行代码。看到代码运行比试图解释代码要好。
document.getElementById("demo")
x = document.getElementById("demo").value
function myFunction() {
  var message, x; // declarations separated by a comma - end declarations with ;
  message = document.getElementById("message"); // assignment of an Element (which is an Object) to var message
  message.innerHTML = ""; // assignment to the Element's innerHTML property which writes inside the HTML Element itself - won't work on inputs (use .value)
  x = document.getElementById("demo").value; // assign the demo input value to var x
  try { // try things and send to catch if throw occurs
    if(x == "") throw "empty"; // == is a truthy test use === for more accuracy
    if(isNaN(x)) throw "not a number"; // not numeric-ish - isNaN() works on strings too
    x = Number(x); // cast var x to a number - could also be done like x = +x;
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) { // err argument receives throw if there is an error
    message.innerHTML = "Input is " + err; // assign
  }
}