ماذا يعني !! (علامتا تعجب) في JavaScript؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم JavaScript وصادفت بناء غريبًا في كود شخص آخر. كان مكتوبًا شيء مثل:
```javascript
let isActive = !!someValue;
```
أفهم أن علامة التعجب الواحدة `!` هي "NOT" منطقية، والتي تعكس القيمة (تجعل `true` من `false` والعكس صحيح). لكن لماذا كتابة علامتي تعجب متتاليتين؟ أليس هذا نفس كتابة `!(!someValue)`؟ أم أن هذا معامل خاص لا أعرفه؟
حاولت التجربة في وحدة تحكم المتصفح:
```javascript
console.log(!!"hello"); // true
console.log(!!0); // false
console.log(!!""); // false
console.log(!!null); // false
console.log(!!undefined); // false
console.log(!!42); // true
```
النتائج غريبة بعض الشيء: `!!"hello"` يعطي `true`، رغم أن السلسلة النصية ليست فارغة. `!!0` يعطي `false`، رغم أن 0 هو رقم. ربما هذا مرتبط بتحويل الأنواع؟ اشرح لي، من فضلك، لماذا نحتاج هذا المضاعف؟