2017-04-25 567 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。 –