Javascript变量范围混淆
关于范围,我有一个小问题。在下面的程序中,我在.js文件中声明了两个变量:countRows和countCols。在Javascript变量范围混淆,javascript,Javascript,关于范围,我有一个小问题。在下面的程序中,我在.js文件中声明了两个变量:countRows和countCols。在saveTable()中。但是,当我记录它们时,在函数之后,它们的值为0 为什么它们不从函数中保留它们的值 var table = document.getElementById("table"); var countRows = 0; var countCols = 0; function saveTable() { countRows = table.rows.leng
saveTable()中。但是,当我记录它们时,在函数之后,它们的值为0
为什么它们不从函数中保留它们的值
var table = document.getElementById("table");
var countRows = 0;
var countCols = 0;
function saveTable() {
countRows = table.rows.length;
countCols = table.rows[0].cells.length;
var data = "";
for(var i = 0; i < table.rows.length; i++) {
for(var j = 0; j < table.rows[i].cells.length; j++) {
data += table.rows[i].cells[j].innerHTML + ",";
}
}
document.cookie = data;
}
console.log(countRows); //These equal 0
console.log(countCols);
var table=document.getElementById(“表”);
var countRows=0;
var countCols=0;
函数saveTable(){
countRows=table.rows.length;
countCols=table.rows[0].cells.length;
var数据=”;
对于(var i=0;i
您必须调用该函数
var table = document.getElementById("table");
var countRows = 0;
var countCols = 0;
function saveTable() {
countRows = table.rows.length;
countCols = table.rows[0].cells.length;
var data = "";
for(var i = 0; i < table.rows.length; i++) {
for(var j = 0; j < table.rows[i].cells.length; j++) {
data += table.rows[i].cells[j].innerHTML + ",";
}
}
document.cookie = data;
}
// Call the function
saveTable();
console.log(countRows); //These equal 0
console.log(countCols);
var table=document.getElementById(“表”);
var countRows=0;
var countCols=0;
函数saveTable(){
countRows=table.rows.length;
countCols=table.rows[0].cells.length;
var数据=”;
对于(var i=0;i
要添加到@Steven Stark answer中,发生这种情况是因为在记录变量之前没有调用函数,它们在这里共享作用域。示例如下:
设a=0;
//这将更改a,因为函数直接访问父范围中声明的a
函数changeA(){
a=3;
}
changeA();
控制台日志(a)
//这丝毫没有改变
功能更改参数(a){
//因为此“a”仅存在于此函数的作用域中
a=5;
}
改变参数(a);
控制台日志(a)
您的控制台。log
在您的函数之外对其进行编码,这意味着它在函数定义之后立即执行。而不是在执行了之后
啊,是的,谢谢你,先生@史蒂文斯塔克:张贴答案?