|
2 | 2 |
|
3 | 3 | [Instagram](https://www.instagram.com/theavocoder) hesabımda, günlük olarak çoktan seçmeli Javascript soruları paylaşıyorum, ayrıca burada da paylaşacağım!
|
4 | 4 |
|
5 |
| -Temelden ileri düzeye: Javascript'i ne kadar iyi bildiğinizi test edin, bilginizi biraz tazeleyin ya da mülakatanıza hazırlanın! :muscle: :rocket: Repoyu haftalık olarak yeni sorularla güncelliyorum. Son güncelleme: <a href=#20190726><b>26 Temmuz</b></a> |
| 5 | +Temelden ileri düzeye: Javascript'i ne kadar iyi bildiğinizi test edin, bilginizi biraz tazeleyin ya da mülakatanıza hazırlanın! :muscle: :rocket: Repoyu haftalık olarak yeni sorularla güncelliyorum. Son güncelleme: <a href=#20190805><b>5 Ağustos</b></a> |
6 | 6 |
|
7 | 7 | Cevaplar, soruların altında gizlenmiştir. Görmek için sadece tıklayın. İyi şanşlar :heart:
|
8 | 8 |
|
@@ -2717,3 +2717,258 @@ function getName(name) {
|
2717 | 2717 |
|
2718 | 2718 | </p>
|
2719 | 2719 | </details>
|
| 2720 | + |
| 2721 | +--- |
| 2722 | + |
| 2723 | +###### <a name=20190805></a>87. Çıktısı Nedir? |
| 2724 | + |
| 2725 | +```javascript |
| 2726 | +console.log("I want pizza"[0]) |
| 2727 | +``` |
| 2728 | + |
| 2729 | +- A: `"""` |
| 2730 | +- B: `"I"` |
| 2731 | +- C: `SyntaxError` |
| 2732 | +- D: `undefined` |
| 2733 | + |
| 2734 | +<details><summary><b>Cevap</b></summary> |
| 2735 | +<p> |
| 2736 | + |
| 2737 | +#### Cevap: B |
| 2738 | + |
| 2739 | +Bir string içindeki belli bir indeksteki karakteri almak için, köşeli parantez notasyonunu kullanabilirsiniz. String içindeki ilk karakterin indeksi 0'dır, ve böylece devam eder. Bu örnekte indeksi 0 olan elemanı istiyoruz, `"I"` karakteri, loglanır. |
| 2740 | + |
| 2741 | +Bu yöntemin IE7 ve altında desteklenmediğine dikkat edin. Bu durumda, `.charAt()` kullanabilirsiniz. |
| 2742 | + |
| 2743 | +</p> |
| 2744 | +</details> |
| 2745 | + |
| 2746 | +--- |
| 2747 | + |
| 2748 | +###### 88. Çıktısı Nedir? |
| 2749 | + |
| 2750 | +```javascript |
| 2751 | +function sum(num1, num2 = num1) { |
| 2752 | + console.log(num1 + num2) |
| 2753 | +} |
| 2754 | + |
| 2755 | +sum(10) |
| 2756 | +``` |
| 2757 | + |
| 2758 | +- A: `NaN` |
| 2759 | +- B: `20` |
| 2760 | +- C: `ReferenceError` |
| 2761 | +- D: `undefined` |
| 2762 | + |
| 2763 | +<details><summary><b>Cevap</b></summary> |
| 2764 | +<p> |
| 2765 | + |
| 2766 | +#### Cevap: B |
| 2767 | + |
| 2768 | +Varsayılan parametrenin değerini fonksiyonun başka parametresine eşitleyebilirsiniz, varsayılan parametreden _önce_ tanımladıkları müddetçe. `sum` fonksiyonuna `10` değerini geçtik. Eğer `sum` fonksiyonu sadece 1 argüman alırsa, `num2` değeri geçilmedi demektir, ve `num1`'ın değeri geçtiğimiz `10` değerine eşittir bu durumda. `num2`'nun varsayılan değeri `num1`'dır ki o da `10`'dur. `num1 + num2` `20` döndürür. |
| 2769 | + |
| 2770 | +Eğer varsayılan parametrenin değerini, _sonrasında_ (sağında) tanımlanmış bir parametreye eşitlemeye çalışıyorsanız, parametrenin değeri henüz oluşturulmamıştır, hata fırlatacaktır. |
| 2771 | + |
| 2772 | +</p> |
| 2773 | +</details> |
| 2774 | + |
| 2775 | +--- |
| 2776 | + |
| 2777 | +###### 89. Çıktısı Nedir? |
| 2778 | + |
| 2779 | +```javascript |
| 2780 | +// module.js |
| 2781 | +export default () => "Hello world" |
| 2782 | +export const name = "Lydia" |
| 2783 | + |
| 2784 | +// index.js |
| 2785 | +import * as data from "./module" |
| 2786 | + |
| 2787 | +console.log(data) |
| 2788 | +``` |
| 2789 | + |
| 2790 | +- A: `{ default: function default(), name: "Lydia" }` |
| 2791 | +- B: `{ default: function default() }` |
| 2792 | +- C: `{ default: "Hello world", name: "Lydia" }` |
| 2793 | +- D: `module.js`'e ait global nesne |
| 2794 | + |
| 2795 | +<details><summary><b>Cevap</b></summary> |
| 2796 | +<p> |
| 2797 | + |
| 2798 | +#### Cevap: A |
| 2799 | + |
| 2800 | +`import * as name` yazımı ile, `module.js` dosyası içindeki _tüm `export`'ları_ `index.js` dosyası içinde `data` olarak adlandırdığımız yeni bir nesneye aktarıyoruz. `module.js` dosyası içinde, iki `export` var: varsayılan export ve isimlendirilmiş export. Varsayılan export `"Hello World"` string'i döndüren bir fonksiyon ve isimlendirilmiş export `"Lydia"` değerine sahip `name` olarak isimlendirilmiş değişken. |
| 2801 | + |
| 2802 | +`data` nesnesi varsayılan exportlar için `default` özelliğine, isilendirilmiş exportlar için isimlendirilmiş export'un ismi olan ve değeri isimlendirilmiş export'un değeri olan özelliklere sahiptir. |
| 2803 | + |
| 2804 | +</p> |
| 2805 | +</details> |
| 2806 | + |
| 2807 | +--- |
| 2808 | + |
| 2809 | +###### 90. Çıktısı Nedir? |
| 2810 | + |
| 2811 | +```javascript |
| 2812 | +class Person { |
| 2813 | + constructor(name) { |
| 2814 | + this.name = name |
| 2815 | + } |
| 2816 | +} |
| 2817 | + |
| 2818 | +const member = new Person("John") |
| 2819 | +console.log(typeof member) |
| 2820 | +``` |
| 2821 | + |
| 2822 | +- A: `"class"` |
| 2823 | +- B: `"function"` |
| 2824 | +- C: `"object"` |
| 2825 | +- D: `"string"` |
| 2826 | + |
| 2827 | +<details><summary><b>Cevap</b></summary> |
| 2828 | +<p> |
| 2829 | + |
| 2830 | +#### Cevap: C |
| 2831 | + |
| 2832 | +Sınıflar fonksiyon yapıcıları için "syntactical sugar"dır. `Person` sınıfına denk olan sınıf yapıcısı şöyle olabilirdi: |
| 2833 | + |
| 2834 | +```javascript |
| 2835 | +function Person() { |
| 2836 | + this.name = name |
| 2837 | +} |
| 2838 | +``` |
| 2839 | + |
| 2840 | +Bir fonksiyon yapıcısını `new` ile çağırmak `Person` "instance" oluşturur, `typeof` anahtar kelimesi instance için `"object"` döndürür. `typeof member` `"object"` döndürür. |
| 2841 | + |
| 2842 | +</p> |
| 2843 | +</details> |
| 2844 | + |
| 2845 | +--- |
| 2846 | + |
| 2847 | +###### 91. Çıktısı Nedir? |
| 2848 | + |
| 2849 | +```javascript |
| 2850 | +let newList = [1, 2, 3].push(4) |
| 2851 | + |
| 2852 | +console.log(newList.push(5)) |
| 2853 | +``` |
| 2854 | + |
| 2855 | +- A: `[1, 2, 3, 4, 5]` |
| 2856 | +- B: `[1, 2, 3, 5]` |
| 2857 | +- C: `[1, 2, 3, 4]` |
| 2858 | +- D: `Error` |
| 2859 | + |
| 2860 | +<details><summary><b>Cevap</b></summary> |
| 2861 | +<p> |
| 2862 | + |
| 2863 | +#### Cevap: D |
| 2864 | + |
| 2865 | +`.push` methodu dizinin _yeni uzunluğunu_ döndürür, dizinin kendisini değil! `newList`'i `[1, 2, 3].push(4)`'a eşitleyerek, `newList`'i dizinin yeni uzunluğuna eşitledik: `4`. |
| 2866 | + |
| 2867 | +Sonra, `.push` methodunu `newList` üzerinde kullanmayo denedik. `newList` sayısal değer `4` olduğundan, `.push` methodunu kullanamayız: TypeError fırlatılır. |
| 2868 | + |
| 2869 | +</p> |
| 2870 | +</details> |
| 2871 | + |
| 2872 | +--- |
| 2873 | + |
| 2874 | +###### 92. Çıktısı Nedir? |
| 2875 | + |
| 2876 | +```javascript |
| 2877 | +function giveLydiaPizza() { |
| 2878 | + return "Here is pizza!" |
| 2879 | +} |
| 2880 | + |
| 2881 | +const giveLydiaChocolate = () => "Here's chocolate... now go hit the gym already." |
| 2882 | + |
| 2883 | +console.log(giveLydiaPizza.prototype) |
| 2884 | +console.log(giveLydiaChocolate.prototype) |
| 2885 | +``` |
| 2886 | + |
| 2887 | +- A: `{ constructor: ...}` `{ constructor: ...}` |
| 2888 | +- B: `{}` `{ constructor: ...}` |
| 2889 | +- C: `{ constructor: ...}` `{}` |
| 2890 | +- D: `{ constructor: ...}` `undefined` |
| 2891 | + |
| 2892 | +<details><summary><b>Cevap</b></summary> |
| 2893 | +<p> |
| 2894 | + |
| 2895 | +#### Cevap: D |
| 2896 | + |
| 2897 | +Sıradan fonksiyonlar, `giveLydiaPizza` gibi, `constructor` özelliği olan `prototype` nesnesi özelliğine sahiptir. Ancak ok fonksiyonlar (arrow functions), `giveLydiaChocolate` gibi, bu `prototype` özelliğine sahip değildir. `giveLydiaChocolate.prototype` ile `prototype` özelliğine erişmeye çalışıldığında `undefined` döndürülür. |
| 2898 | + |
| 2899 | +</p> |
| 2900 | +</details> |
| 2901 | + |
| 2902 | +--- |
| 2903 | + |
| 2904 | +###### 93. Çıktısı Nedir? |
| 2905 | + |
| 2906 | +```javascript |
| 2907 | +const person = { |
| 2908 | + name: "Lydia", |
| 2909 | + age: 21 |
| 2910 | +} |
| 2911 | + |
| 2912 | +for (const [x, y] of Object.entries(person)) { |
| 2913 | + console.log(x, y) |
| 2914 | +} |
| 2915 | +``` |
| 2916 | + |
| 2917 | +- A: `name` `Lydia` and `age` `21` |
| 2918 | +- B: `["name", "Lydia"]` and `["age", 21]` |
| 2919 | +- C: `["name", "age"]` and `undefined` |
| 2920 | +- D: `Error` |
| 2921 | + |
| 2922 | +<details><summary><b>Cevap</b></summary> |
| 2923 | +<p> |
| 2924 | + |
| 2925 | +#### Cevap: A |
| 2926 | + |
| 2927 | +`Object.entries(person)` key ve nesneleri içeren dizilerden oluşan dizi döndürür: |
| 2928 | + |
| 2929 | +`[ [ 'name', 'Lydia' ], [ 'age', 21 ] ]` |
| 2930 | + |
| 2931 | +`for-of` döngüsünü kullanarak, dizi içindeki her bir elemanı gezebiliriz, alt dizileri bu örnekte. for-of döngüsü içinde alt dizileri `const [x, y]` kullanarak parçalayabiliriz. `x` alt dizideki ilk elemana, `y` alt dizideki ikinci elemana eşittir. |
| 2932 | + |
| 2933 | +İlk alt dizi `[ "name", "Lydia" ]`, `x` `"name"`'e ve `y` `"Lydia"`'ya eşittir. |
| 2934 | +İkinci alt dizi `[ "age", 21 ]`, `x` `"age"`'e ve `y` `21`'a eşittir. |
| 2935 | + |
| 2936 | +</p> |
| 2937 | +</details> |
| 2938 | + |
| 2939 | +--- |
| 2940 | + |
| 2941 | +###### 94. Çıktısı Nedir? |
| 2942 | + |
| 2943 | +```javascript |
| 2944 | +function getItems(fruitList, ...args, favoriteFruit) { |
| 2945 | + return [...fruitList, ...args, favoriteFruit] |
| 2946 | +} |
| 2947 | + |
| 2948 | +getItems(["banana", "apple"], "pear", "orange") |
| 2949 | +``` |
| 2950 | + |
| 2951 | +- A: `["banana", "apple", "pear", "orange"]` |
| 2952 | +- B: `[["banana", "apple"], "pear", "orange"]` |
| 2953 | +- C: `["banana", "apple", ["pear"], "orange"]` |
| 2954 | +- D: `SyntaxError` |
| 2955 | + |
| 2956 | +<details><summary><b>Cevap</b></summary> |
| 2957 | +<p> |
| 2958 | + |
| 2959 | +#### Cevap: D |
| 2960 | + |
| 2961 | +`...args` bir "rest" parametredir. "Rest" parametresinin değeri geriye kalan tüm argümanları içeren bir dizidir, ve **sadece son parametre olabilir.** Bu örnekte, rest parametresi ikindi parametreydi. Bu mümkün değildir ve syntax hatası fırlatılacaktır. |
| 2962 | + |
| 2963 | +```javascript |
| 2964 | +function getItems(fruitList, favoriteFruit, ...args) { |
| 2965 | + return [...fruitList, ...args, favoriteFruit] |
| 2966 | +} |
| 2967 | + |
| 2968 | +getItems(["banana", "apple"], "pear", "orange") |
| 2969 | +``` |
| 2970 | + |
| 2971 | +Yukarıdaki örnek çalışır. `[ 'banana', 'apple', 'orange', 'pear' ]` dizisini döndürür. |
| 2972 | + |
| 2973 | +</p> |
| 2974 | +</details> |
0 commit comments