මම වහාම ක්රියාත්මක කරන ලද කාර්යයන් පිළිබඳ තොරතුරු සොයමින් සිටිමි, කොතැනක හෝ මම මෙම අංකනය මත පැටලී සිටියෙමි:
+function(){console.log("Something.")}()
+
ශ්රිතය ඉදිරිපිට ඇති ලකුණෙහි තේරුම / කරන්නේ කුමක්දැයි යමෙකුට මට පැහැදිලි කළ හැකිද ?
මම වහාම ක්රියාත්මක කරන ලද කාර්යයන් පිළිබඳ තොරතුරු සොයමින් සිටිමි, කොතැනක හෝ මම මෙම අංකනය මත පැටලී සිටියෙමි:
+function(){console.log("Something.")}()
+
ශ්රිතය ඉදිරිපිට ඇති ලකුණෙහි තේරුම / කරන්නේ කුමක්දැයි යමෙකුට මට පැහැදිලි කළ හැකිද ?
Answers:
පහත දැක්වෙන කොටස +
ප්රකාශනයක් ලෙස සැලකීමට එය පාර්සර්ට බල කරයි . මෙය සාමාන්යයෙන් වහාම ක්රියාත්මක වන කාර්යයන් සඳහා භාවිතා කරයි, උදා:
+function() { console.log("Foo!"); }();
නොමැතිව +
එහිදී, ව්යාකරණ විග්රහ එය (ප්රකාශනයක් හෝ කිහිපයක් නොවන ප්රකාශනය ප්රකාශ විය හැකි) ප්රකාශයක් බලාපොරොත්තු වෙනවා එහිදී රාජ්ය, මෙම වචනය නම් function
ශ්රිතයක ආරම්භයේ වගේ ප්රකාශ කරනවාට වඩා උත්සවයකට ප්රකාශනය සහ එසේ ()
එය පහත සඳහන් (ඉහත පේළියේ අවසානයේ ඇති ඒවා) සින්ටැක්ස් දෝෂයක් වනු ඇත (නමක නොපැවතීම, එම උදාහරණයේ දී). සමග වන +
, එය නම උපයෝගී කර හැකි වන උත්සවයක්, විකල්ප සහ මුර්ත වන ප්රතිඵල වේ, එසේ වරහන් වලංගු වේ, ඉන් අදහස් වන්නේ, එය කාර්යය ප්රකාශනය වේ.
+
විකල්ප වලින් එකක් පමණි. එය ද කළ හැකි -
, !
, ~
, හෝ වෙනත් ඕනෑම ඒකජ ක්රියාකරු ගැන. විකල්පයක් ලෙස, ඔබට වරහන් භාවිතා කළ හැකිය (මෙය වඩාත් සුලභ ය, නමුත් වැඩි වශයෙන් හෝ අඩු වශයෙන් සින්ටැක්ටිකල් ලෙස නිවැරදි නොවේ):
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
SO TJCrowder ගේ පිළිතුරට අනුබද්ධිත, +
සාමාන්යයෙන් භාවිතා කරනුයේ මෙම SO පිළිතුර පැහැදිලි කරන පරිදි අගයක් සංඛ්යාත්මකව වාත්තු කිරීමට බල කිරීම සඳහා ය . මෙම අවස්ථාවෙහිදී එය 'යුනරි ප්ලස් ක්රියාකරු' ලෙස හැඳින්වේ (ගොග්ලිං පහසු කිරීම සඳහා).
var num = +variant;
එබැවින් ශ්රිතයක් ඉදිරිපිට එය ශ්රිතයේ ප්රති result ලය සංඛ්යාවක් ලෙස අර්ථ දැක්වීමට බල කළ හැකි ක්රමයක් විය හැකිය. එය තවමත් සිදුවී ඇති බවට මට සැකයක් ඇත, නමුත් න්යායාත්මකව JIT හට එය සංඛ්යාත්මකව පමණක් ශ්රිතයක් ලෙස සම්පාදනය කිරීමට භාවිතා කළ හැකිය. කෙසේ වෙතත්, විශාල ප්රකාශනයක භාවිතා කරන විට ඒකීය ප්ලස් සංක්ෂිප්ත වීම වැළැක්වීම සඳහා ඔබට වරහන් අවශ්ය වේ:
blah + (+(function(){ var scope; return "4"; })());
(+function() { ... })()
අංකනය (වෙන් මෙම ප්රශ්නයට පිළිතුරු නැත යන කාරනය සිට) දෝෂ තොරව කිසි ක්රියාත්මක කළ හැකිය.
3++function...
.
+function...
එය අනවශ්යය. blah + function( ){ ... }( );
එතීමේ වරහන් සඳහා අවශ්යතාවය ප්රතික්ෂේප කරන එම ප්රති result ලයම ලබා ගත හැකිය .
එබැවින් කෙටි පිළිතුර නම්, එය එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් ශ්රිත ප්රති results ල භාවිතා කිරීමෙන් සින්ටැක්ස් දෝෂයක් වළක්වන බවයි.
void
ක්රියාකරු භාවිතා කිරීමෙන් ප්රතිලාභ අගය ගැන ඔබ උනන්දුවක් නොදක්වන බව ඔබට එන්ජිමට උපදෙස් දිය හැකිය :
void function() { console.log("Foo!"); }();
ඇත්ත වශයෙන්ම, සියල්ල වටා වරහන් තැබීම ද එම අරමුණු ඉටු කරයි.