# Tip Dönüşümleri

## `String` Tipine Dönüştürme

Bir değeri **`string`** tipine çevirmek için **`String()`** fonksiyonu veya **`.toString()`** metodu kullanılır. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayi = 1923;
sayi = String(sayi);
alert(typeof sayi);
```

{% endcode %}

**`String()`** fonksiyonu **`NaN`**, **`Null`** ve **`Undefined`** değerini de **`string`** olarak çevirebilir. Öte yandan **`.toString()`** metodu daha sıkıdır. **`NaN`** değeri için çevrim yaparken diğer özel değerler için hata verir.

{% code lineNumbers="true" %}

```javascript
let tanimsiz;
let sayiOlmayan = NaN;
let bos = null;

tanimsiz = String(tanimsiz);
alert(typeof tanimsiz);

sayiOlmayan = String(sayiOlmayan);
alert(typeof sayiOlmayan);

bos = String(bos);
alert(typeof bos);
```

{% endcode %}

Yukarıdaki değerlerin hepsi **`string`** tipine dönüştürülür. Diğer yöntemde ise:

{% code lineNumbers="true" %}

```javascript
let tanimsiz;
let sayiOlmayan = NaN;
let bos = null;
let sayi = 1923;

sayiOlmayan = sayiOlmayan.toString(); // Çalışır.
alert(typeof sayiOlmayan);

sayiOlmayan = sayi.toString(); // Çalışır
alert(typeof sayi);

tanimsiz = tanimsiz.toString(); //hata verir
alert(typeof tanimsiz);

bos = bos.toString(); //hata verir
alert(typeof bos);
```

{% endcode %}

## `Number` Tipine Dönüştürme

> **`Number()`** | **`+`** | **`parseInt()`** | **`parseFloat()`**

Bir değeri **`number`** tipine dönüştürmek için **sayı tipine dönüştürülebilir bir değere sahip olması gerekir.  `Numbe`**&#x72; tipinde olmayan bir değişkeni **number** tipine dönüştürmek için birkaç yöntem var. İlk yöntem değişkenin önüne + işareti koymak.

{% code lineNumbers="true" %}

```javascript
let st1 = "18.3";
let st2 = "12";
let toplam = +st1 + +st2; // ortadaki + toplama işareti, diğerleri dönüştürme.
alert(toplam);
```

{% endcode %}

Diğer yöntemlerden biri de **`Number()`** fonksiyonudur.

{% code lineNumbers="true" %}

```javascript
let st1 = "18.3";
let st2 = "12";
let fark = Number(st1) - Number(st2);
alert(fark);
```

{% endcode %}

Bu yöntemler katı yöntem olup eğer değişken içinde sayısal olmayan bir karakter var ise **`NaN`** değeri verir.

{% code lineNumbers="true" %}

```javascript
let uzunluk = "27cm";
alert( Number(uzunluk) ); // NaN
```

{% endcode %}

Bu sebeple **`parseInt()`** veya **`parseFloat()`** fonksiyonları daha işlevsel olabilir. **`parseInt()`** ile tamsayıları, **`parseFloat()`** ile ondalıklı sayıları dönüştürebiliriz.

{% code lineNumbers="true" %}

```javascript
let uzunluk = "27cm";
let genislik = "22.4cm";
alert( parseInt(uzunluk) );
alert( parseFloat(genislik) );
```

{% endcode %}

Bu fonksiyonlar baştan ve sondan boşlukları kırpar ve ardından sol baştaki rakamlardan başlar. Sağa doğru rakamların bittiği yerde rakamı sonlandırır. **`parseInt()`** fonksiyonu isteğe bağlı bir parametre daha alır. Bu da taban bilgisidir. Örnek.

{% code lineNumbers="true" %}

```javascript
let renk = "0xFF";
alert( parseInt(renk,16) ); //255 sonucunu döndürür.
renk = "FF";
alert( parseInt(renk,16) ); // Başına 0x yazılmasa da 16 tabanını verince çevirir.
```

{% endcode %}

## `Boolean` Tipine Dönüştürme

> **`Boolean()`** | **`!!`**

Bir değeri **`boolean`** tipine çevirmek için **`Boolean()`** fonksiyonu veya **`!!`** operatörü kullanılır.&#x20;

**`Boolean`** tipine çevirmek için **`Boolean()`** fonksiyonu kullanılır. Örnek.

{% code lineNumbers="true" %}

```javascript
let bir = 1;
let sifir = 0;
alert( Boolean(bir) ); // true
alert( Boolean(sifir) ); // false
```

{% endcode %}

Matematiksel olarak **`true`** değer 1 **`false`** değer 0'dır. Tersten deneyelim.

{% code lineNumbers="true" %}

```javascript
let dogru = true;
let yanlis = false;
alert( Number(dogru) ); // 1
alert( Number(yanlis) ); // 0
```

{% endcode %}

Karakter dizilerinde ise boş string değeri **`false`** herhangi bir karakter içeren string **`true`** olur.

{% code lineNumbers="true" %}

```javascript
let bos = '';
let dolu = ' ';
alert( Boolean(bos) ); //false
alert( Boolean(dolu) ); //true
```

{% endcode %}

Bir değeri **`boolean`** tipine çevirmek için **`!!`** operatörü de kullanılır. Örnek.

<pre class="language-javascript" data-line-numbers><code class="lang-javascript">let bos = '';
let dolu = ' ';
let bir = 1;
let sifir = 0;
<strong>
</strong>alert( !!bos ); //false
alert( !!dolu ); //true
alert( !!sifir ); //false
alert( !!bir ); //true
</code></pre>
