2017-04-25 124 views
0

我尝试this example下面给出的使用for循环在正常js文件和reactjs中循环。变量未定义问题

for(var a=[i=0];++i<20;a[i]=i); 

当我运行在该代码发生反应它显示

的 'i' 没有定义

import React, { Component } from 'react'; 
import './App.css'; 
export default class Board extends Component 
{ 

    move (e) 
    { 
     for(var a=[i=0];++i<20;a[i]=i); 
     console.log(a) 
    } 
    render() { 
     return (
      <div className="boxes" onClick={this.move.bind(this)}></div> 
     ); 
    } 
} 

enter image description here

当我在正常JS运行它文件工作fine.any想法为什么它发生在reactjs。

+4

这不是React做任何事情,看起来Webpack不喜欢这种编写代码的方式。这是很好的,因为这种代码不应该写,因为它是不清楚的阅读。 –

回答

1

这是因为你的阵营应用程序正在使用严格模式:

"use strict"; 
 

 
for(var a=[i=0];++i<20;a[i]=i);

如果你不想禁用严格模式,可以解决这个问题,通过简单的声明i变量事先:

"use strict"; 
 

 
var i; 
 
for(var a=[i=0];++i<20;a[i]=i);

但是,您用来捆绑应用程序的软件很可能支持为您缩小文件,所以我不确定自己缩小它们会带来什么好处。例如,如果您使用的是Webpack,您可以参考以下问题:How to build minified and uncompressed bundle with webpack?

1

您的捆绑代码在文件顶部有“严格模式”。如果使用未声明的变量,严格模式会引发错误。

0

Webpack正在编译您的代码,并且不允许在未声明的情况下使用变量。 Javascript本身将允许使用未定义的变量。

+0

它是webpack,而不是React。 –

+0

修复它,谢谢。 –

+0

不客气。我删除了我的downvote。 –