JavaScript Use Strict
"use strict"; ¶¨Òå JavaScript ´úÂëÓ¦¸ÃÒÔ¡°Ñϸñģʽ¡±Ö´ÐС£
"use strict" Ö¸Áî
"use strict" ÊÇ JavaScript 1.8.5 ÖеÄÐÂÖ¸ÁECMAScript version 5£©¡£
Ëü²»ËãÒ»ÌõÓï¾ä£¬¶øÊÇÒ»¶ÎÎÄ×Ö±í´ïʽ£¬¸üÔç°æ±¾µÄ JavaScript »áºöÂÔËü¡£
"use strict"; µÄ×÷ÓÃÊÇָʾ JavaScript ´úÂëÓ¦¸ÃÒÔ¡°Ñϸñģʽ¡±Ö´ÐС£
ÔÚÑϸñģʽÖУ¬ÄúÎÞ·¨£¬ÀýÈ磬ʹÓÃδÉùÃ÷µÄ±äÁ¿¡£
ÒÔϰ汾µÄä¯ÀÀÆ÷Ö§³ÖÑϸñģʽ£º
- °æ±¾ 10 ÒÔºóµÄ IE
- °æ±¾ 4 ÒÔºóµÄ Firefox
- °æ±¾ 13 ÒÔºóµÄ Chrome
- °æ±¾ 5.1 ÒÔºóµÄ Safari
- °æ±¾ 12 ÒÔºóµÄ Opera
ÉùÃ÷Ñϸñģʽ
ͨ¹ýÔڽű¾»òº¯ÊýµÄ¿ªÍ·Ìí¼Ó "use strict"; À´ÉùÃ÷Ñϸñģʽ¡£
Ôڽű¾¿ªÍ·½øÐÐÉùÃ÷£¬ÓµÓÐÈ«¾Ö×÷ÓÃÓò£¨½Å±¾ÖеÄËùÓдúÂë¾ùÒÔÑϸñģʽÀ´Ö´ÐУ©£º
ʵÀý
"use strict";
x = 3.14; // Õâ»áÒý·¢´íÎó£¬ÒòΪ x ÉÐδÉùÃ÷
ʵÀý
"use strict";
myFunction();
function myFunction() {
y = 3.14; // Õâ»áÒý·¢´íÎó£¬ÒòΪ y ÉÐδÉùÃ÷
}
ÔÚº¯ÊýÖÐÉùÃ÷Ñϸñģʽ£¬ÓµÓоֲ¿×÷ÓÃÓò£¨Ö»Óк¯ÊýÖеĴúÂëÒÔÑϸñģʽִÐУ©£º
x = 3.14; // Õâ²»»áÒý·¢´íÎó myFunction(); function myFunction() { "use strict"; y = 3.14; // Õâ»áÒý·¢´íÎó }
"use strict"; Óï·¨
ÉùÃ÷ÑϸñģʽµÄÓï·¨±»Éè¼ÆÎª¼æÈݸüÔç°æ±¾µÄ JavaScript¡£
±àÒë JavaScript ³ÌÐòÖеÄÊýÖµÎÄ×Ö£¨±ÈÈç 4+5£©»ò×Ö·û´®ÎÄ×Ö£¨"Bill Gates"£©²»»áÓиºÃæÐ§¹û¡£ËüÖ»»á±àÒëΪ²»´æÔڵıäÁ¿È»ºóÏûʧ¡£
ËùÓÐ "use strict"; Ö»»á¶Ô¡°Àí½â¡±Æäº¬ÒåµÄбàÒëÆ÷²úÉúÓ°Ïì¡£
ΪʲôʹÓÃÑϸñģʽ£¿
ÑϸñģʽʹÎÒÃǸüÈÝÒ×±àд¡°°²È«µÄ¡± JavaScript¡£
Ñϸñģʽ°Ñ֮ǰ¿É½ÓÊܵġ°»µÓï·¨¡±×ª±äÎªÕæÊµµÄ´íÎó¡£
¾ÙÀýÀ´Ëµ£¬ÔÚÆÕͨµÄ JavaScript ÖУ¬´í´ò±äÁ¿Ãû»á´´½¨ÐµÄÈ«¾Ö±äÁ¿¡£ÔÚÑϸñģʽÖУ¬´Ë¾Ù½«Å׳ö´íÎó£¬ÕâÑù¾Í²»¿ÉÄÜÒâÍâ´´½¨È«¾Ö±äÁ¿¡£
ÔÚÆÕͨ JavaScript ÖУ¬Èç¹ûÏò²»¿ÉдÊôÐÔ¸³Öµ£¬¿ª·¢Õß²»»áµÃµ½ÈκδíÎó·´À¡¡£
ÔÚÑϸñģʽÖУ¬Ïò²»¿ÉдµÄ¡¢Ö»ÄܶÁÈ¡µÄ¡¢²»´æÔÚµÄÊôÐÔ¸³Öµ£¬»òÕßÏò²»´æÔڵıäÁ¿»ò¶ÔÏó¸³Öµ£¬½«Å׳ö´íÎó¡£
ÑϸñģʽÖв»ÔÊÐíµÄÊÂÏî
ÔÚ²»ÉùÃ÷±äÁ¿µÄÇé¿öÏÂʹÓñäÁ¿£¬ÊDz»ÔÊÐíµÄ£º
"use strict";
x = 3.14; // Õ⽫Òý·¢´íÎó
¶ÔÏóÒ²ÊDZäÁ¿
ÔÚ²»ÉùÃ÷¶ÔÏóµÄÇé¿öÏÂʹÓöÔÏóÒ²ÊDz»ÔÊÐíµÄ£º
"use strict";
x = {p1:10, p2:20}; // Õ⽫Òý·¢´íÎó
ɾ³ý±äÁ¿£¨»ò¶ÔÏó£©ÊDz»ÔÊÐíµÄ£º
"use strict";
var x = 3.14;
delete x; // Õ⽫Òý·¢´íÎó
ɾ³ýº¯ÊýÊDz»ÔÊÐíµÄ£º
"use strict";
function x(p1, p2) {};
delete x; // Õ⽫Òý·¢´íÎó
ÖØ¸´²ÎÊýÃûÊDz»ÔÊÐíµÄ£º
"use strict";
function x(p1, p1) {}; // Õ⽫Òý·¢´íÎó
°Ë½øÖÆÊýÖµÎı¾ÊDz»ÔÊÐíµÄ£º
"use strict";
var x = 010; // Õ⽫Òý·¢´íÎó
תÒå×Ö·ûÊDz»ÔÊÐíµÄ£º
"use strict";
var x = \010; // Õ⽫Òý·¢´íÎó
дÈëÖ»¶ÁÊôÐÔÊDz»ÔÊÐíµÄ£º
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // Õ⽫Òý·¢´íÎó
дÈëÖ»ÄÜ»ñÈ¡µÄÊôÐÔÊDz»ÔÊÐíµÄ£º
"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14; // Õ⽫Òý·¢´íÎó
ɾ³ý²»¿Éɾ³ýµÄÊôÐÔÊDz»ÔÊÐíµÄ£º
"use strict";
delete Object.prototype; // Õ⽫Òý·¢´íÎó
×Ö·û´® "eval" ²»¿ÉÓÃ×÷±äÁ¿£º
"use strict";
var eval = 3.14; // Õ⽫Òý·¢´íÎó
×Ö·û´® "arguments" ²»¿ÉÓÃ×÷±äÁ¿£º
"use strict";
var arguments = 3.14; // Õ⽫Òý·¢´íÎó
with Óï¾äÊDz»ÔÊÐíµÄ£º
"use strict";
with (Math){x = cos(2)}; // Õ⽫Òý·¢´íÎó
´¦ÓÚ°²È«¿¼ÂÇ£¬²»ÔÊÐí eval() ÔÚÆä±»µ÷ÓõÄ×÷ÓÃÓòÖд´½¨±äÁ¿£º
"use strict";
eval ("var x = 2");
alert (x); // Õ⽫Òý·¢´íÎó
ÔÚÀàËÆ f() µÄº¯Êýµ÷ÓÃÖУ¬this µÄÖµÊÇÈ«¾Ö¶ÔÏó¡£ÔÚÑϸñģʽÖУ¬ÏÖÔÚËü³ÉΪÁË undefined¡£
¶ÔδÀ´µÄ±£ÕÏ
ÑϸñģʽÖв»ÔÊÐíʹÓÃΪδÀ´Ô¤ÁôµÄ¹Ø¼ü´Ê¡£ËüÃÇÊÇ£º
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict";
var public = 1500; // Õ⽫Òý·¢´íÎó
¾¯¸æ
"use strict" Ö¸ÁîÖ»ÄÜÔڽű¾»òº¯ÊýµÄ¿ªÍ·±»Ê¶±ð¡£