with/eval/严格模式

1:with:简单点来说就是明确了查找域

复制代码
 1 var mood = 'happy'
 2 var obj = {
 3     name: 'tyy',
 4     age: 18
 5 }
 6 with(obj) {
 7     name = 'taosifan'
 8     age = 40
 9 }
10 console.log(obj);
复制代码

 

 2:eval函数

可以把传入的字符串当做JS代码来运行

举个例子

1 var evalString = 'var age=18;console.log(age);'
2 eval(evalString)

 

 

  但是一般不使用,因为有很多缺点

  1:代码可读性不好

  2:在执行过程中可以别修改,容易遭到攻击

  3:必须经过解释器,不能被JS引擎优化

3:严格模式

使用方式:在JS文件或者函数里面加上"use strict"

限制:设置严格模式会对JS代码有很多限制

1:禁止意外创建全局变量

2:不允许函数有相同的参数名称

3:静默错误(true.foo=name 或者NAN=123)

4:不允许使用原先的八进制格式 现在新规定的八进制(0o)十六进制(0x)二进制(0b)可以写

5:with语句不允许使用

6:eval函数不会向上引用变量 不给上一层作用域引用变量

7:在严格模式下,自执行函数(默认绑定)会指向undefined

一般不用用this取window 直接用window或者localStorage

 

1 "use strict"
2 
3 function foo() {
4     console.log(this);
5 }
6 foo()

 

 不使用严格模式的话打印的是window

8.seTimeout(是个黑盒子)严格模式下正常函数格式写或者箭头函数都是window

posted @   沁霓  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示