严格模型和非严格模式的区别

严格模式 use strict,就是在代码的头部加上use strict

function test(){

console.log(arguments.callee)

console.log(123)

}

test()

把这段代码放到浏览器是不会报错的,但是,如果严格模式是会报错的,小伙伴们可以拿过去代码去加上use strict在自己的浏览器上试试

因为严格模式是没有arguments,caller,callee

说一下这个callee 当函数本身

function test(){
var i = 1
return function(){
i++;
console.log(11)
if(i<3){
arguments.callee()
}else{
return
}
}

}
test(1,2)()

他常用于递归调用。

function test1(){

console.log(test1.caller)  //用他的函数

}

function demo(){

test1()

}

demo()

caller是值得是调用它的函数。

谁调用的test1当然是demo了

不过如果你给他加上use strict他也会报错的,因为严格模式也不支持caller.

with(document){

write(‘a‘)

}

var obj = {

name:‘ff‘

}

var name = ‘wind‘

function fn(){

var name = ‘scope‘

with(obj){

console.log(name)

}

}

fn()

with里面如果有对象,他就当作执行代码的最顶端,这里面我们fn()打印出来的就是ff,如果with里面没有东西的话,fn()打印的就是scope,

如果加上use strict直接就报错了

还有一条函数里面this不是window 在严格模式下

‘use strict‘

function test(){

console.log(this) //要想有值必须赋值 undefined

}

// new test()

test()

// test.call(123)

如果有new test()他里面就是生成的new 实例,

如果call的话这个this当然就是123

还有咱们关心的class类

class Person{

constructor(name){

this.name = name

}

get(){

console.log(this)//默认严格模式

// this.run()

}

run(){

console.log(111)

}

}

let person = new Person(‘zs‘)

person.get()

let {get} = person

get()

//es6类中默

class类里面this是undefined为什么?

因为get被暴露在了window下面,但是这个方法里面是严格模式我们自然知道打印的就是undefined

‘use strict‘

function get(name,name){

this.name = name

}

get(1)

///es5和标注浏览器的一个误差

‘use strict‘

var obj = {

name:‘d‘,

name:‘s‘

}

函数不能重名,对象这个检测不到浏览器

原文地址:https://www.cnblogs.com/MDGE/p/12423835.html

时间: 2024-10-09 11:58:32

严格模型和非严格模式的区别的相关文章

网络I/O模型--03非阻塞模式(ServerSocket与Socket的超时处理)--解除accept()、 read()方法阻塞

对于阻塞方式的一种改进是在应用程序层面上将 "一直等待 "的状态主动打开: 这种模式下,应用程序的线程不再一直等待操作系统的 I/O状态,而是在等待一段时间后就解除阻塞.如果没有得到想要的结果,则再次进行相同的操作 . 这样的工作方式,保证了应用程序的线程不会一直阻塞,而可以进行一些其他工作一一例如软件业务层面上暂时不需要这些网络数据的操作过程 服务端代码(对accept()方法也解除阻塞) package testBlockSocket; import java.io.IOExcep

网络I/O模型--04非阻塞模式(解除accept()、 read()方法阻塞)的基础上加入多线程技术

由于应用程序级别并没有使用多线程技术,这就导致了应用程序只能一个一个地对Socket 套接字进行处理.这个 Socket 套接宇没有处理完,就没法处理下一个 Socket 套接字 .针对这个 问题还是可以进行改进的:让应用程序层面上各个 Socket 套接字的处理相互不影响 . 服务端代码 package testBlockSocket; import java.io.InputStream; import java.io.OutputStream; import java.net.Server

关系型和非关系型数据库的区别--转载

关系型数据库和非关系型数据库 关系数据库和非关系数据库的区别是,关系数据库只有“表”这一种数据结构:而非关系数据库系统还有其他数据结构,对这些数据结构还有其他操作. 随着网络的不断发展,单纯关系数据库面临挑战. 关系与非关系型数据库的特点 1.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就

Spring基于事件驱动模型的订阅发布模式代码实例详解

代码下载地址:http://www.zuidaima.com/share/1791499571923968.htm 原文:Spring基于事件驱动模型的订阅发布模式代码实例详解 事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者(订阅者)就可以接收到改变: 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的

正则基础之——贪婪与非贪婪模式

转载自:http://blog.csdn.net/lxcnn/article/details/4756030 1        概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”

交互式shell和非交互式shell、登录shell和非登录shell的区别

交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(interactive shell and non-interactive shell)交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.退出.当你退出后,shell也终止了.s

大钟的ios开发之旅(2)————简单说说ios中ARC与非ARC模式下的property的变量修饰词

/******************************************************************************************** * author:[email protected]大钟 * E-mail:[email protected] *site:http://www.idealpwr.com/ *深圳市动力思维科技发展有限公司 * http://blog.csdn.net/conowen * 注:本文为原创,仅作为学习交流使用,转

delphi Winsock非阻塞模式详解

delphi Winsock非阻塞模式详解   Winsockt的TClientSocket设置ClientType的属性为ctNonBlocking.则通讯模式为非阻塞模式. ctBlocking为阻塞模式,这里说一下阻塞与非阻塞的一些区别. ctBlocking模式当客户端请求数据后,线程阻塞不继续执行,直到服务端返回数据,客户端将据需执行,并读取数据. 然而阻塞模式的缺陷还是比较大的,经常会使程序死掉或者假死.当服务端发送较大的文件时,阻塞模式基本废掉了,由于数据缓冲较小,不能及时的获取数

(转)浅析三层架构与MVC模式的区别

MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. MVC是表现层的架构,MVC的Model实际上是View Mod