JQUERY源码阅读

https://jquery.com/download/网站进行下载
vscode 中进行代码学习。
npm install jquery

jQuery JavaScript Library v3.5.1

"use strict" 严格模式是采用具有限制性JavaScript变体的一种方式,从而使代码显示地 脱离“马虎模式/稀松模式/懒散模式“(sloppy)模式。

1.变量必须声明。
2.严格模式不仅仅是一个子集:他的产生是为了形成与不同代码的不同含义。
不支持严格模式与支持严格模式的浏览器在执行严格模式代码时会采用不同的行为。
所以在没有对运行环境展开性能验证对于严格模式相关方面支持的情况,就算采用严格模式也不一定取得预期效果。严格模式代码和非严格模式代码可以共存,因此项目脚本可以采用渐进性地严格模式。
严格模式对正常的JavaScript语义做一些更改。
1.严格模式通过抛出错误来消除一些原有的静默错误。
2.严格模式修复一些导致JavaScript引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行的更快。
3.严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。
4.严格模式下对象的所有属性应当是唯一。
5.严格模式要求函数的参数名唯一。
6.严格模式下禁止使用8进制。

// strict.html:104 Uncaught TypeError: Cannot delete property 'property1' of #<Object>
delete obj3.property1;
//Octal literals are not allowed in strict mode.在严格模式下不允许使用八进制字面值。
var aa = 032;
 console.log(aa);

练习代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
    <a href="index.html">返回</a>
    <h1>严格模式</h1>
</body>
<script>
  // 整个js 代码声明严格模式。
 "use strict"
  const a = 4;
  console.log(a);
  // 函数内部声明严格模式
  function testStrict()
  {
    "use strict"
    var a = function()
    {
      return 1;
    }
    return a;
  }
  //strict.html:58 Uncaught SyntaxError: Identifier 'a' has already been declared
  // var a;
  // console.log(a);
  
var obj1 = {};
Object.defineProperty(obj1,"x", 
  { 
    value: 42,
    writable: false // 不可重写
  }
);
// strict.html:70 Uncaught TypeError: Cannot assign to read only property 'x' of object '#<Object>'
// obj1.x = 44;
// console.log(obj1.x);
// 给只读属性赋值
var obj2 = {
  _x:12
  ,get x(){
    return this._x
  }
  ,writable : false
  ,set x(a) 
  {
    this._x = a
  }
};
console.log(obj2.x);
//Uncaught TypeError: Cannot set property x of #<Object> which has only a getter
obj2.x = 15;
console.log(obj2.x);

// 给不可扩展对象的新属性赋值
// Uncaught TypeError: Cannot add property newProp, object is not extensible
var fixed = {};
// Object.preventExtensions(fixed); // 阻止对象扩展。
fixed.newProp = "ohai"; 

var obj3 = Object.create({
  a: 1
});
Object.defineProperty(obj3,"property1",{
  value: "222",
  writable: false,
  configurable: false, //
  enumerable: true
})
// strict.html:104 Uncaught TypeError: Cannot delete property 'property1' of #<Object>
// delete obj3.property1;
// Octal literals are not allowed in strict mode.在严格模式下不允许使用八进制字面值。
// var aa = 032;
// console.log(aa);

</script>
</html>

参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值