首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

启用"use strict“后,为什么在使用prompt()时可以不使用let赋值变量?

启用"use strict"后,使用prompt()时可以不使用let赋值变量的原因是因为在严格模式下,prompt()函数返回的值会被隐式地赋给一个名为result的变量,而不需要使用let关键字显式声明变量。

在非严格模式下,如果没有使用let关键字或者其他变量声明方式来声明变量,直接使用prompt()函数返回的值会将其赋给一个全局变量,这可能会导致意外的命名冲突和不可预测的行为。

然而,在严格模式下,JavaScript引擎会禁止隐式地创建全局变量,而是要求显式地声明变量。因此,当启用"use strict"后,使用prompt()函数时会自动将返回值赋给一个局部变量result,无需显式声明变量。

需要注意的是,虽然在严格模式下可以不使用let关键字来声明变量,但为了代码的可读性和维护性,建议仍然使用let或其他变量声明方式来显式声明变量。这样可以更清晰地表达代码的意图,并避免潜在的问题。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各种业务需求。产品介绍链接
  • 腾讯云云数据库 MySQL 版:高性能、可扩展的关系型数据库服务。产品介绍链接
  • 腾讯云对象存储(COS):安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能平台(AI Lab):提供丰富的人工智能服务和开发工具,助力开发者构建智能应用。产品介绍链接
  • 腾讯云物联网平台(IoT Hub):为物联网设备提供连接、管理和数据处理能力。产品介绍链接
  • 腾讯云移动推送(TPNS):提供高效、稳定的移动消息推送服务,助力开发者实现消息通知功能。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【JS】646- 1.2w字 | 初中级前端 JavaScript 自测清单 - 1

"use strict" 指令将浏览器引擎转换为“现代”模式,改变一些内建特性的行为。 2. 使用 通过脚本文件/函数开头添加 "use strict"; 声明,即可启用严格模式。...I'm a strict mode function! " + nested(); } 3. 注意点 "use strict" 需要定义脚本最顶部(函数内除外),否则严格模式可能无法启用。...体验 启用 "use strict" ,为未定义元素赋值将抛出异常: "use strict"; leo = 17; // Uncaught ReferenceError: leo is not defined...启用 "use strict" ,试图删除不可删除的属性时会抛出异常: "use strict"; delete Object.prototype; // Uncaught TypeError: Cannot...函数中的变量 函数中,可以使用局部变量和外部变量。 3.1 局部变量 函数中声明的变量只能在该函数内可见。

1.6K50

1.2w字 | 初中级前端 JavaScript 自测清单 - 1

"use strict" 指令将浏览器引擎转换为“现代”模式,改变一些内建特性的行为。 2. 使用 通过脚本文件/函数开头添加 "use strict"; 声明,即可启用严格模式。...I'm a strict mode function! " + nested(); } 3. 注意点 "use strict" 需要定义脚本最顶部(函数内除外),否则严格模式可能无法启用。...体验 启用 "use strict" ,为未定义元素赋值将抛出异常: "use strict"; leo = 17; // Uncaught ReferenceError: leo is not defined...启用 "use strict" ,试图删除不可删除的属性时会抛出异常: "use strict"; delete Object.prototype; // Uncaught TypeError: Cannot...函数中的变量 函数中,可以使用局部变量和外部变量。 3.1 局部变量 函数中声明的变量只能在该函数内可见。

1.1K00

ECMAScript 6入门 - let和const命令详解

let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只let命令所在的代码块内有效。...ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是声明之前就使用这些变量,就会报错。...总之,代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。...defined. }}}} 内层作用域可以定义外层作用域的同名变量 'use strict'; {{{{ let insane = 'outside'; { let insane...与let命令相同 只声明所在的块级作用域内有效 声明不提升 存在暂时性死区,只能在声明的位置后面使用 不可重复声明 只保证变量名指向的地址不变,并不保证该地址的数据不变 对于复合类型的变量变量指向数据

79850

盘点JavaScript中Eval函数的使用方法

因此不能从外部访问 eval 中声明的函数和变量: // 提示:本教程所有可运行的示例都默认启用了严格模式 'use strict'eval("let x = 5; function f() {}..."); alert(typeof x); // undefined(没有这个变量) // 函数 f 也不可从外部进行访问 如果启用严格模式,eval 没有属于自己的词法环境,因此可以从外部访问变量 x...让使用 eval 来计算数学表达式: let expr = prompt("Type an arithmetic expression?"...用户可以输入任意文本或代码。 ? 运行结果: ? 三、使用 “eval” eval 中使用外部局部变量也被认为是一个坏的编程习惯,因为这会使代码维护变得更加困难。...如果 \eval\ 中的代码需要访问局部变量可以使用 new Function 替代 \eval\,并将它们作为参数传递: let f = new Function('a', 'alert(a)')

1.6K30

【JS ES6】use strict 严格模式

语法不够严谨,一直被人们所诟病,例如在使用一个变量可以使用 var 关键字来提前声明(例如:url = 'http://c.biancheng.net/';),此时 JavaScript 解释器会自动为您创建这个变量...如果在函数的第一行代码中添加"use strict";,则表示只该函数中启用严格模式。如下例所示: <!...strict";或'use strict';指令只有整个脚本第一行或者函数第一行才能被识别,除了 IE9 以及更低的版本外,所有的浏览器都支持该指令。...1、不允许使用未声明的变量 普通模式下,如果一个变量还没有声明,就直接拿来赋值,JavaScript 解释器会自动为您创建这个变量。...严格模式下,不允许使用八进制数(以零为前缀的数字,例如 010、0377),而在普通模式下则可以

1.8K40

JavaScript 严格模式

使用严格模式可以限制 JavaScript 的一些语言特性,使用严格模式可以去除书写代码的一些“骚操作”(有些特性严格模式下是不可用的),使代码更严谨整洁。...use strict 可以写在文件的许多位置,下面说一下不同位置它起到的作用与作用范围。...当打包文件(多个文件打包成一个),你最好将所有的文件(打包之前的)都设置成严格模式或非严格模式,因为如果这样做,打包的文件可能并不是严格模式,可能会背离你的目的。...这样做的好处是,当你想使用一个局部变量,却没有声明它,这时如果不使用严格模式,改变量默认会挂载到上层作用域中。有了严格模式可以帮助你检查这样的错误,同时也可以提高编码规范。 2....eval 会将传入的字符串执行,然后将返回(或者赋值)的变量返回。而且 "use strict" 严格模式标志可以写进 eval 函数中执行。

93310

【JS ES6】const var let 一文搞懂声明关键字所有的知识点

var定义a console.log(a); // 1 } func(24);         let   let不允许重复定义,但可以多次赋值let必须先定义声明 使用。...} func(); 使用 let 定义变量 务必要先定义使用 定义函数作用域问题         相同点 访问外部全局变量 var a = "xiao xie"; function...也就是说 变量在内部声明 是私有的 在内部声明则是全局的,(共同点) 全局污染问题 上面已经提到过了这个问题,实际开发中,我们应该严格遵守代码规范,不能图方便,不要不声明变量,就直接使用,不然会在后续书写问题引发安全隐患...} func(); console.log(a); 由于a没有定义 所以会报错 使用了 "use strict"; 严格模式,就可以避免这种代码规范问题。...,不同作用域中可以进行重复定义、 var全局污染 当我们使用var定义全局变量,会产生全局污染,这是var声明关键字本身的一个大问题, 全局污染是这样的 var screenLeft

31510

废话的将ts一篇文章写完

写在前面 网上很多写ts的教程的,但是我觉得写的太繁琐了,这里我直接将基础用法写上,包括编译的js代码,以便于你们进行对比, 包括一些常见的报错信息,你们可以对比一下报错信息, 我尽量废话的将ts...元组定义 如果想在数组里面进行定义不同的类型,可以使用元组,元组js中本身是不存在的,ts中存在的一种数据类型 let tuple: [number,string,boolean,null] = [...1,"tom",true,null] 编译为js结果: "use strict"; let tuple = [1, "tom", true, null]; 元组虽然可以定义不同类型的数据放到数组里面...联合类型 (这不是一种类型,而是一个变量需要多种类型的时候,可以使用|进行分割) let cls : number | string = "tom" cls = 5 编译为js结果 "use strict...泛型 又叫做动态类型,当我不确定我的函数入参类型的时候,可以使用一个广泛的类型,简称泛型,使用函数的时候决定该入参的类型 function genericity(params: T): T{

6910

React 语法之let和const命令

又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以let声明变量前,对tmp赋值会报错。...// ES5严格模式 'use strict'; if (true) { function f() {} } // 报错 ES6引入了块级作用域,明确允许块级作用域之中声明函数。...// ES6严格模式 'use strict'; if (true) { function f() {} } // 不报错 并且ES6规定,块级作用域之中,函数声明语句的行为类似于let块级作用域之外不可引用...为了减轻因此产生的兼容问题,ES6附录B里面规定,浏览器的实现可以遵守上面的规定,有自己的行为方式。 允许块级作用域内声明函数。...// 不报错 'use strict'; if (true) { function f() {} } // 报错 'use strict'; if (true) function f() {}

6.3K60

大厂HR面试必备ES6中的深入浅出面试题知识点

暂时性死区,一个块级作用域中对一个变量使用let声明前,该变量是不可使用,称为暂时性死区。...let声明变量和const声明常量,两个都有块级作用域 ES5中没有块级作用域,var有变量提升,let中,使用变量一定要进行声明。...解构赋值,ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,for...of循环可以遍历数组,set和map结构。...strict'; if (true) { function f() {} } // 报错 es6中引入了块级作用域,明确允许块级作用域之中声明函数 // ES6严格模式 'use strict...'; if (true) { function f() {} } // 不报错 es6的块级作用域声明函数只使用大括号的情况下成立 // 不报错 'use strict'; if (true) {

61120

严格模式 – JavaScript

您也可以将整个脚本的内容用一个函数包括起来,然后在这个外部函数中使用严格模式。这样做就可以消除合并的问题,但是这就意味着您必须要在函数作用域外声明一个全局变量。...当然也可以代码中显式开启严格模式, 但这样做并不是必须的. function strict1(str){ “use strict”; return eval(str); // str中的代码严格模式下运行...严格模式下,arguments.callee 是一个不可删除属性,而且赋值和读取都会抛出异常: “use strict”; var f = function() { return arguments.callee...如果fun严格模式下,那么fun.caller和fun.arguments都是不可删除的属性而且存值、取值都会报错: function restricted() { “use strict...两个针对Mozilla开发的警告:第一,如果你的JavaScript版本1.7及以上(你的chrome代码或者你正确使用了)并且开启了严格模式的话,因为let和yield是最先引入的关键字,所以它们会起作用

99130

TS 常见问题整理(60多个,持续更新ing)

add(x, y) { ... } } 2. null 和 undefined 是其它类型(包括 void)的子类型,可以赋值给其它类型(如:数字类型),赋值的类型会变成 null 或 undefined...mode and emit "use strict" for each source file. */ } `strictNullChecks` 参数用于新的严格空检查模式,严格空检查模式下,null...3. never 和 void 的区别 void 表示没有任何类型(可以赋值为 null 和 undefined)。 never 表示一个包含值的类型,即表示永远不存在的值。...全局环境中,不能给某些变量声明类型 let name: string; // 加了 export 就不会报错 // export {} ? image.png 26....使用 as 替代尖括号表示类型断言 TS 可以使用尖括号来表示类型断言,但是结合 JSX 的语法将带来解析上的困难。因此,TS .tsx 文件里禁用了使用尖括号的类型断言。

14.7K76

重学JS-1.1-知识点:严格模式“use strict

"use strict"出现的原因 ES旧标准中,存在不完善的特性,ES5规范对这些不完善的特性进行了修改。 但是为了兼容老版本浏览器,这些不完善的特性还是默认可以使用。...为了使用新特性,避开老版本中这些不完善的特性,我们可以开启严格模式“use strict”。 简单来说,严格模式的作用就是: 消除ES旧标准中不合理的特性。 保证代码的安全和准确。..."use strict"如何开启 要开启严格模式,我们可以把"use strict"放在文件顶部或者函数顶部。..."with".you = "far away"; //TypeError })(); 简化变量使用 禁用with "use strict"; var x = 17; with (obj) {...x; } eval不再为上层范围引入新变量 eval 执行的严格模式代码下,变量的行为与严格模式下非 eval 执行的代码中的变量相同。

65510

36 个JS 面试题为你助力金九银十(面试必读)

1.JS中let和const有什么用? 现代js中,let&const是创建变量的不同方式。 早期的js中,咱们使用var关键字来创建变量。...不可变变量是指其值程序的整个生命周期中永不改变的变量let: let用于创建一个可变变量,可变变量是像var这样的普通变量可以任意次数地更改。 2....值可以是已解析的值,也可以是说明为什么未解析该值的原因。...解释一下 "use strict" ? “use strict”是Es5中引入的js指令。 使用use strict”指令的目的是强制执行严格模式下的代码。...严格模式下,咱们不能在声明变量的情况下使用变量。 早期版本的js忽略了“use strict”。 36.解释 JS 事件委托模型? JS中,有一些很酷的东西。其中之一是委托模型。

7.2K30

前端(三)-JavaScript

这个设计错误带来了 严重的后果:如果一个变量没有通过 var 申明就被使用,那么该变量就自动被申明为全局变量; 为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,...strict模式下运行的 JavaScript代码,强制通过 var 申明变量,未使用 var 申明变量使用的,将导致运行错误。...--启用strict模式的方法是JavaScript代码的第一行写上:--> `use strict`; // 如果浏览器支持strict模式,下面的代码将报ReferenceError...但是,这个匿名函数赋值给了变量 abs ,所以,通过变量 abs 就可以调用该函数。 //上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个 ; ,表示赋值语句结束。...标识,从运行结果可知,传入的参数先绑定 a 、 b ,多余的 参数以数组形式交给变量 rest ; 3.4 变量的作用域 描述 作用域 var声明的变量 全局变量 不用var声明的变量(建议使用) 全局变量

85820
领券