JavaScript进阶【二】JavaScript 严格模式(use strict)的使用
/***
*使用严格模式的原因:
*
①:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
②:消除代码运行的一些不安全之处,保证代码运行的安全;
③:提高编译器效率,增加运行速度;
④:为未来新版本的Javascript做好铺垫。
*/ //不允许使用未声明的变量:
"use strict";
z = 3.14; // 报错 (z 未定义) //对象也是一个变量。
"use strict";
z = {p1:10, p2:20}; // 报错 (z 未定义) //不允许删除变量或对象。
"use strict";
var x = 3.14;
delete x; // 报错:Uncaught SyntaxError: Delete of an unqualified identifier in strict mode //不允许删除函数。
"use strict";
function func(n1, n2) {};
delete func; // 报错 // 不允许变量重名:
"use strict";
function func(n1, n2) {}; // 报错 // 不允许使用八进制:
"use strict";
var x = 010; // 报错:error //不允许使用转义字符:
"use strict";
var x = \010; // 报错 // 不允许对只读属性赋值:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // 报错:Uncaught TypeError: Cannot assign to read only property 'x' of object '#<Object>' //不允许对一个使用getter方法读取的属性进行赋值
"use strict";
var obj = {get x() {return 0} }; obj.x = 3.14; // 报错:ncaught TypeError: Cannot set property x of #<Object> which has only a getter // 不允许删除一个不允许删除的属性:
"use strict";
delete Object.prototype; // 报错 //变量名不能使用 "eval" 字符串:
//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
"use strict";
var eval = 3.14; // 报错 //变量名不能使用 "arguments" 字符串:
"use strict";
var arguments = 3.14; // 报错 //禁止this关键字指向全局对象。
function f(){
return !this;
}
// 返回false,因为"this"指向全局对象,"!this"就是false function f(){
"use strict";
return !this;
}
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
JavaScript进阶【二】JavaScript 严格模式(use strict)的使用的更多相关文章
- javascript学习(二)javascript常见问题总结
在js使用过程中,经常会碰到一些问题,本人利用闲暇时间整理了一些常见问题的解决方法,贴出来和大家分享,有需要的朋友可以参考下 1.JS中方法和变量都是区分大小写的 2.单引号.双引号在JS中没有特殊 ...
- JavaScript进阶(二)在一个JS文件中引用另一个JS文件
在一个JS文件中引用另一个JS文件 转载地址:http://blog.csdn.net/zndxlxm/article/details/7875787 方法一 在调用文件的顶部加入下例代码 ...
- 二、JavaScript语言--JS基础--JavaScript进阶篇--JavaScript内置对象
1.什么事对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方 ...
- JavaScript设计模式(二):工厂模式
工厂模式模式的定义与特点 工厂模式(Factory Pattern)是编程中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们在创建对象时不会对 ...
- Javascript进阶篇——( JavaScript内置对象---下)--Array数组对象---笔记整理
Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var ...
- Javascript进阶篇——( JavaScript内置对象---下)--Math对象---笔记整理
Math对象使用 Math 的属性和方法: <script type="text/javascript"> var mypi=Math.PI; var myabs=Ma ...
- Javascript进阶篇——( JavaScript内置对象---上-Date,string,charAt,indexOf,split,substring,substr)笔记整理
什么是对象JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法.对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等:对象的方法:能够在 ...
- 网站开发综合技术 一 JavaScript简介 二JavaScript语法
第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...
- Javascript 严格模式use strict
一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立”严格模式”的目 ...
- javascript继承(二)—创建对象的三种模式
一.工厂模式 function createPerson(name,age){ var o = {}; o.name = name; o.age = age; o.sayHi = function() ...
随机推荐
- codevs——T1169 传纸条
http://codevs.cn/problem/1169/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
- SPOJ 1811LCS Longest Common Substring
后缀自己主动机裸题.... Longest Common Substring Time Limit: 2000MS Memory Limit: Unknown 64bit IO Format: ...
- [Cypress] Load Data from Test Fixtures in Cypress
When creating integration tests with Cypress, we’ll often want to stub network requests that respond ...
- fputs与fgets
1. fputs 函数名: fputs 功 能: 送一个字符到一个流中 用 法: int fputs(char *string, FILE *stream); 说明: fputs是一 ...
- Android解决使用findViewById时须要对返回值进行类型转换问题的辅助类
在我们的开发工作时,findViewById可能是用得最多的函数之中的一个.但它特别讨厌的地方就是我们常常须要对返回的view进行类型转换,输入麻烦.代码丑陋,比如曾经我们在Activity中找一些子 ...
- Linux命令(十)——Shell程序设计一(变量与操作符)
Shell是linux系统中用户和系统交互的接口,它除了作为命令解释器以外,还是一种高级程序设计语言.在前面介绍的linux命令中,Shell都作为命令解释器出现.下面分两节简单介绍脚本程序设计中的语 ...
- SpringMVC实战(三种映射处理器)
1.前言 上一篇博客,简单的介绍了一下SpringMVC的基础知识,这篇博客来说一下SpringMVC中的几种映射处理器机制. 2.三种映射处理器 2.1 BeanNameUrlHandlerMapp ...
- 7种炫酷HTML5 SVG液态水滴融合分解动画特效
这是一组使用HTML5 SVG过滤器制作的炫酷液态水滴融合分解动画特效.这些SVG动画特效使一些HTML元素.如菜单.分页button.APP.选择框等元素的过渡动画像几粒水滴一样融合分解.效果很的酷 ...
- POJ 3126 Prime Path SPFA
http://poj.org/problem? id=3126 题目大意: 给你两个四位的素数s和t,要求每次改变一个数字.使得改变后的数字也为素数,求s变化到t的最少变化次数. 思路: 首先求出全部 ...
- 在Mac OSX系统的Docker机上启用Docker远程API功能
在Mac OSX系统的Docker机上启用Docker远程API功能 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs D ...