TECHTOGOU

javascript - console.log(array) 显示与迭代数组和显示单个元素不同的数组内容

coder 2024-05-16 原文

我有以下代码:

console.log("start");
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");

这给了我以下输出:

[16:34:41.171] start
[16:34:41.171] 0 = 0
[16:34:41.172] 1 = 168
[16:34:41.172] 2 = 171
[16:34:41.172] [0, 168, 171, 139]
[16:34:41.172] end

也就是说,它在迭代数组时不显示 139 元素,但在输出整个数组时 console.log 确实打印了它。为什么? (<-->

我稍后会修改数组,console.log 是否以某种方式延迟到我更改数组之后?请注意,改变语句的顺序,将 consoel.log(array) 直接放在开头不会改变结果(仍然是不同的输出)。

我使用的是 firefox 20.0

最佳答案

更新:如果您想看到此行为,请复制并粘贴控制台中的代码并执行。然后关闭开发人员工具并再次打开,显然指针的事情只发生在代码在后台执行时(当您重新打开控制台时发生)。

Console.log输出对象,是一个指针,没有真正的值。这意味着如果对象稍后更改,console.log 对象将被更新。尝试:

console.log("start");
var array = [1];
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");
array.push(9999);// you will see the 9999 in the console no matter it was added after the output.

为了防止指针问题,试试这个: console.log(array.join());因为稍后在您的应用程序的某个时刻您要添加 139 值。

关于javascript - console.log(array) 显示与迭代数组和显示单个元素不同的数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484838/

有关javascript - console.log(array) 显示与迭代数组和显示单个元素不同的数组内容的更多相关文章

  1. javascript - 是否可以使用 JavaScript 从 Flash applet 拖放至外部? - 2

    假设我想要一个包含Flash小程序的网页,并且我想将一些对象拖放到网页的其余部分或拖放到该网页的其余部分,这完全可能吗?如果您知道某个网站可以做到这一点,那就加分了! 最佳答案 这个让我很感兴趣。我知道jessegavin在我去解决这个问题时发布了一些代码,但是这个代码已经过测试。我有一个super简单的工作示例,可让您在Flash之间拖动。很乱,因为我在午休时间把它放在一起。这是demo还有source基类直接取自ExternalInterfaceLiveDocs.我添加了MyButton以便按钮可以有一些文本。大多数javasc

  2. javascript - JS ES6 中 ()=> 和 _=> 和 (_)=> 的区别 - 2

    这个问题在这里已经有了答案:ESCMAScript6arrowfunctions-parenthesesaroundparameter(1个回答)Using_(underscore)variablewitharrowfunctionsinES6/Typescript(4个答案)关闭去年。我注意到,当我想编写一个粗箭头函数“=>”时,我可以执行_=>、()=>或者(_)=>和我的代码功能相同(至少对于我的用例而言)它们之间有实际区别吗?如果是,我应该使用哪一个?我一直在使用()=>的时间,但后来有一天我看到某人使用_=>的代码,我觉得它看起来很酷,所以我也开始使用它。我看到这篇中篇文章h

  3. javascript - 我尝试比较具有多个字符的拆分字符串 - 2

    varinput='HISFANTOR';varoutput=[];varchar=input.split('');for(vari=0,len=char.length;i<len;i++){if(char[i]=='H'||'K'||'Y'||'V'||'B'||'C'||'N'||'O'||'F'||'P'||'S'||'I'||'U'){

  4. javascript - react Hook : dispatch action from useEffect - 2

    我的文件夹结构:|--App|--Components|--PageA.js|--PageB.js|--PageC.js|--common-effects|--useFetching.js我正在重构我的代码以使用Reacthooks从API获取数据.我想从useFetching.js中的useEffect发送一个被saga中间件拦截的Action。仅当组件(PageA、PageB、PageC)挂载时才应分派(dispatch)此操作。我正在使用redux、react-redux和redux-saga。PageA.js:function(props){useFetching(action

  5. javascript - 为什么两个不同的键在一个对象中相互覆盖? - 2

    我分配了以下三个变量:consta={key:true}constb={key:false}constc={[a]:'1',[b]:'2'}然后当我尝试将以下内容记录到控制台时:console.log(c[a],c[b])我得到了以下信息:22当我认为我应该得到:12为什么我错了,我该如何解决? 最佳答案 对象只能有字符串(或符号)作为它们的键。如果您尝试使用非字符串,它会被转换为字符串。所以当你设置c[a]为1时,a是一个对象,这意味着它需要被转换成一个字符串。所以你最终将c["[objectObj

  6. javascript - 如何将 math.max 缩减为对象数组 - 2

    我有一个对象数组。我想从数组的数字属性中获取最大值:[{number:1000,name:"Josh"},{number:2000,name:"Joker"},{number:3000,name:"Batman"}]我正在使用此解决方案,但我一直收到NAN:constmax=arr.reduce((a,b)=>Math.max(a.number,b.number));我的目标是获取最大值,然后将其存储在变量中constx={number:3000,name:"Batman"}我如何通过reduce实现它?它似乎只适用

  7. javascript - 使用函数式编程复制数组的元素 - 2

    我正在尝试复制数组中的每个元素,但使用的是函数式样式。我目前有这个:["a","b","c"]我得到这个:["a","a","b","b","c","c"]到目前为止,我已经尝试了以下方法,将每个元素映射到一个数组,然后使用flat()获取一维数组。有没有更干净的方法,因为感觉我在滥用map和flat。["a","b","c"].map(item=>[item,item]).flat();有

  8. javascript - 如何在 React 中使用钩子(Hook)绑定(bind)函数? - 2

    基本上我们在构造函数中绑定(bind)事件处理函数,或者像下面这样在React类组件中将它们作为箭头函数classTestextendsComponent{constructor(props){super(props);this.state={count:0};this.setCount=this.setCount.bind(this);}setCount(){this.setState({count:this.state.count+1});}render(){return<buttononClick={this.setCount}>Increase</button

  9. javascript - 无法使用 webpack 缩小 css 代码 - 2

    网络包版本:4.16.3全部编译成功。我在bundle.css中编译后的代码不是minify。我尝试在text-webpack-plugin中使用minimize:true,但它不起作用。对于编译,我在命令行中使用命令:webpack在我的工作目录中我做错了什么?我的wepback配置:'usestrict'constwebpack=require("webpack");constExtractTextPlugin=require('extract-text-webpack-plugin')module.exports={context:

  10. javascript - TSLint,强制导入语句中括号之间的间距 - 2

    我需要应用哪个规则来强制导入语句中大括号之间的空格?即代替:import{IPostService}from'./api/IPostService';我要:import{IPostService}from'./api/IPostService'; 最佳答案 我认为这可能是您正在寻找的:"whitespace":[true,"check-module"]check-module-检查导入和导出语句中的空格。 关于javascr

随机推荐

  1. javascript - 是否可以使用 JavaScript 从 Flash applet 拖放至外部? - 2

    假设我想要一个包含Flash小程序的网页,并且我想将一些对象拖放到网页的其余部分或拖放到该网页的其余部分,这完全可能吗?如果您知道某个网站可以做到这一点,那就加分了! 最佳答案 这个让我很感兴趣。我知道jessegavin在我去解决这个问题时发布了一些代码,但是这个代码已经过测试。我有一个super简单的工作示例,可让您在Flash之间拖动。很乱,因为我在午休时间把它放在一起。这是demo还有source基类直接取自ExternalInterfaceLiveDocs.我添加了MyButton以便按钮可以有一些文本。大多数javasc

  2. javascript - JS ES6 中 ()=> 和 _=> 和 (_)=> 的区别 - 2

    这个问题在这里已经有了答案:ESCMAScript6arrowfunctions-parenthesesaroundparameter(1个回答)Using_(underscore)variablewitharrowfunctionsinES6/Typescript(4个答案)关闭去年。我注意到,当我想编写一个粗箭头函数“=>”时,我可以执行_=>、()=>或者(_)=>和我的代码功能相同(至少对于我的用例而言)它们之间有实际区别吗?如果是,我应该使用哪一个?我一直在使用()=>的时间,但后来有一天我看到某人使用_=>的代码,我觉得它看起来很酷,所以我也开始使用它。我看到这篇中篇文章h

  3. javascript - 我尝试比较具有多个字符的拆分字符串 - 2

    varinput='HISFANTOR';varoutput=[];varchar=input.split('');for(vari=0,len=char.length;i<len;i++){if(char[i]=='H'||'K'||'Y'||'V'||'B'||'C'||'N'||'O'||'F'||'P'||'S'||'I'||'U'){

  4. javascript - react Hook : dispatch action from useEffect - 2

    我的文件夹结构:|--App|--Components|--PageA.js|--PageB.js|--PageC.js|--common-effects|--useFetching.js我正在重构我的代码以使用Reacthooks从API获取数据.我想从useFetching.js中的useEffect发送一个被saga中间件拦截的Action。仅当组件(PageA、PageB、PageC)挂载时才应分派(dispatch)此操作。我正在使用redux、react-redux和redux-saga。PageA.js:function(props){useFetching(action

  5. javascript - 为什么两个不同的键在一个对象中相互覆盖? - 2

    我分配了以下三个变量:consta={key:true}constb={key:false}constc={[a]:'1',[b]:'2'}然后当我尝试将以下内容记录到控制台时:console.log(c[a],c[b])我得到了以下信息:22当我认为我应该得到:12为什么我错了,我该如何解决? 最佳答案 对象只能有字符串(或符号)作为它们的键。如果您尝试使用非字符串,它会被转换为字符串。所以当你设置c[a]为1时,a是一个对象,这意味着它需要被转换成一个字符串。所以你最终将c["[objectObj

  6. javascript - 如何将 math.max 缩减为对象数组 - 2

    我有一个对象数组。我想从数组的数字属性中获取最大值:[{number:1000,name:"Josh"},{number:2000,name:"Joker"},{number:3000,name:"Batman"}]我正在使用此解决方案,但我一直收到NAN:constmax=arr.reduce((a,b)=>Math.max(a.number,b.number));我的目标是获取最大值,然后将其存储在变量中constx={number:3000,name:"Batman"}我如何通过reduce实现它?它似乎只适用

  7. javascript - 使用函数式编程复制数组的元素 - 2

    我正在尝试复制数组中的每个元素,但使用的是函数式样式。我目前有这个:["a","b","c"]我得到这个:["a","a","b","b","c","c"]到目前为止,我已经尝试了以下方法,将每个元素映射到一个数组,然后使用flat()获取一维数组。有没有更干净的方法,因为感觉我在滥用map和flat。["a","b","c"].map(item=>[item,item]).flat();有

  8. javascript - 如何在 React 中使用钩子(Hook)绑定(bind)函数? - 2

    基本上我们在构造函数中绑定(bind)事件处理函数,或者像下面这样在React类组件中将它们作为箭头函数classTestextendsComponent{constructor(props){super(props);this.state={count:0};this.setCount=this.setCount.bind(this);}setCount(){this.setState({count:this.state.count+1});}render(){return<buttononClick={this.setCount}>Increase</button

  9. javascript - 无法使用 webpack 缩小 css 代码 - 2

    网络包版本:4.16.3全部编译成功。我在bundle.css中编译后的代码不是minify。我尝试在text-webpack-plugin中使用minimize:true,但它不起作用。对于编译,我在命令行中使用命令:webpack在我的工作目录中我做错了什么?我的wepback配置:'usestrict'constwebpack=require("webpack");constExtractTextPlugin=require('extract-text-webpack-plugin')module.exports={context:

  10. javascript - TSLint,强制导入语句中括号之间的间距 - 2

    我需要应用哪个规则来强制导入语句中大括号之间的空格?即代替:import{IPostService}from'./api/IPostService';我要:import{IPostService}from'./api/IPostService'; 最佳答案 我认为这可能是您正在寻找的:"whitespace":[true,"check-module"]check-module-检查导入和导出语句中的空格。 关于javascr