JavaScript赋值解释
我在w3schools.com上工作,我通常会阅读代码,理解代码行的作用,我对这段代码有点困惑: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
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
}
}