> For the complete documentation index, see [llms.txt](https://hanuce.gitbook.io/javascript-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanuce.gitbook.io/javascript-egitimi/referans-reference-veri-tipleri/array-dizi/uc-nokta-spread-operatoru.md).

# Üç Nokta (Spread) Operatörü

**`Array.from()`** ve **`Array.concat()`**'dan daha kullanışlı bir sözdizimidir.

**`...`** operatörü ile bir **`string`** veya **`array`**'in tüm elemanlarından oluşan bağımsız bir kopya yapılabilir. Örnek.

{% code lineNumbers="true" %}

```javascript
let dizi = [1,2,3];
    str = 'Örnek';
let yeniDizi = [...dizi];
alert(yeniDizi);
yeniDizi = [...str];
alert(yeniDizi);
yeniDizi = [...'JavasScript']
alert(yeniDizi);
```

{% endcode %}

Sayılar için denenirse **hata verir**. Kod yürütülmesi durur.

{% code lineNumbers="true" %}

```javascript
let nmbr = 123;
let dizi = [...nmbr]; // 'nmbr is not iterable'
alert(dizi);
```

{% endcode %}

Farklı iki dizi için kullanılırsa dilimleme yapmadan birleştirir. Örnek.

{% code lineNumbers="true" %}

```javascript
let dil = ['JAVASCRIPT'];
let site = ['hanuce.io'];
let materyal = [...dil,...site]
alert(materyal); // 'JAVASCRIPT,hanuce.io' çıktısı alınır
```

{% endcode %}

Mesela **`Math`** kütüphanesinin metotlarını kullanırken dizileri argüman yapamazsınız. Hata verir. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayilar = [1,2,3,4,5];
alert( Math.max(sayilar) ); // 'NaN' çıktısı alınır.
```

{% endcode %}

Fakat **`...`** operatörü dilimleme yaptığı için bu sorunu çözer.

{% code lineNumbers="true" %}

```javascript
let sayilar = [1,2,3,4,5];
alert( Math.max(...sayilar) ); // '5' çıktısı alınır.
```

{% endcode %}
