Avatar ·

ماذا يعني !! (علامتا تعجب) في 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 هو رقم. ربما هذا مرتبط بتحويل الأنواع؟ اشرح لي، من فضلك، لماذا نحتاج هذا المضاعف؟