首页 > 试题广场 >

在 es6 中,下面程序运行结果输出,选项结果正确的是

[单选题]
在 es6 中,下面程序运行结果输出,选项结果正确的是
for(let i=0;i<12;i++){} console.log(i);
const a = 12;a=13;
console.log(a);
const g = {b:3};
console.log(g.b);
g.b=12;console.log(g.b);
let [head,...tail] = [1,2,3,4];
conole.log(tail);


  • 11,13,3,12,[3,4]
  • i not defined ,TypeError,TypeErrpr,4
  • 11,12,3,3,4
  • i not defined,TypeError,3,12,[2,3,4]

const定义变量不可以被重写,定义对象可以修改属性

发表于 2019-03-09 08:15:30 回复(1)
const a={x:1};
console.log(a.x);
a.x=5;
console.log(a);//Object {x: 5}

const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在引用内容是对象的情况下,这意味着可以改变对象的内容(例如,其参数)。

发表于 2018-04-28 11:19:30 回复(0)
题目让选择一个错的。 那么其余都是对的?逻辑不对啊
发表于 2017-02-13 16:25:31 回复(2)
const 常量的含义是指向的对象不能修改 ,但可以修改对象内部的属性
发表于 2021-08-27 08:29:34 回复(0)
如果严格来说答案中的没有正确选项,第一个应该是 “i is not defined”。不过这个它能跟咱抠字眼,咱不能跟它较真,凑合看吧。
1、考的是变量提升,let不存在变量提升,for循环中定义的变量并不能在外部访问,所以在外部访问 i 就会报“ i is not defined”, 如果 let 换成 var 输出的也只能是 12 不可能是 11。
2、考的是const的特性,const是常量,一经定义不能被重新赋值,所以会报错“Uncaught TypeError: Assignment to constant variable.
3、这题和上面一题有区别,区别就在于这里定义的 g 为一个引用类型,常量 g 中存储的只是对象的引用地址,所以修改对象中的值并不会造成语法报错,而是可以正常输出。
let [a,b,c,d] = [1,2,3,4]
// a ==> 1
// b ==> 2
// c ==> 3
// d ==> 4

let [..arr] = [1,2,3]
// arr ==> [1,2,3]
编辑于 2021-03-11 10:26:45 回复(0)
let只在let命令所在的代码块内有效,题中只在{}中有效
发表于 2020-07-14 15:45:20 回复(0)
http://es6.ruanyifeng.com/#docs/async es6,let,const,解构赋值,等参考阮一峰老师的es6文档
发表于 2019-10-02 20:12:59 回复(0)
1.let声明的变量只在它所在的代码块有效,在本题里就是只在循环体里有效。
2.const是声明了一个不可更改的量,所以在a=13那里就会报错了,而不是跳过重新赋值这句话。
3.const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,也就是只要指向这个函数,更改函数内部的属性值是可以的。
4.见13赞那个答案
发表于 2018-07-31 16:02:37 回复(0)
Eos头像 Eos
1、数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。 var [a, b, c] = [1, 2, 3]; let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [x, , y] = [1, 2, 3]; x // 1 y // 3 let [x, y, ...z] = ['a']; x // "a" y // undefined z // [] let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4] let [ , , third] = ["foo", "bar", "baz"]; third // "baz" 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。 1.let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined 2.const 声明一个常量无法更改,所以TypeError 3.const 声明的是一个常量所以是无法更改的 const a={x:1}; console.log(a.x); a.x=5; console.log(a);//Object {x: 5} 在这里打印出来 a 是一个对象 且他的属性x 的值为5,但是!!如果const出来的是一个对象他的属性是可以更改的,别问为啥~ https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const
发表于 2018-07-21 14:22:32 回复(1)
創头像
4题的答案是 [2,3,4]
发表于 2017-03-20 09:34:14 回复(0)
d
发表于 2016-12-15 00:03:46 回复(0)
1.let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined

2.const 声明一个常量无法更改,所以TypeError

3.const 声明的是一个常量所以是无法更改的
const a={x:1};
    console.log(a.x);
    a.x=5;
    console.log(a);//Object {x: 5}
 在这里打印出来 a 是一个对象 且他的属性x 的值为5,但是!!如果const出来的是一个对象他的属性是可以更改的,别问为啥~

4.我打印的只有一个4
发表于 2017-02-17 20:29:04 回复(12)
我真没有读懂这个题  什么叫输出是错的 其他三个都对么、、、
发表于 2016-12-24 22:50:33 回复(2)
发表于 2017-08-18 09:59:00 回复(3)

1、数组的解构赋值

基本用法

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

以前,为变量赋值,只能直接指定值。

var a = 1; var b = 2; var c = 3;

ES6允许写成下面这样。

var [a, b, c] = [1, 2, 3];
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1 bar // 2 baz // 3 
let [x, , y] = [1, 2, 3];
x // 1 y // 3
let [x, y, ...z] = ['a'];
x // "a" y // undefined z // []
let [head, ...tail] = [1, 2, 3, 4];
head // 1 tail // [2, 3, 4] 

 let [ , , third] = ["foo", "bar", "baz"];
third // "baz"     

	

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。


编辑于 2017-03-26 20:13:43 回复(1)
4 第一个值匹配第一个变量head,剩下的赋值给tail
编辑于 2017-10-05 15:02:22 回复(0)
...运算符有两种意义,第一种是展开运算符,第二种是剩余操作符,就是题目中的用法,是解构的一种,意思是把数组里剩余的元素放到一个数组里赋值给它,所以得到的结果就是方括号2,3,4
发表于 2017-09-29 00:16:17 回复(0)
最后一行报错??

发表于 2022-06-13 09:08:58 回复(1)
这代码写的有点乱,说这么写报错后不应该执行吧,看你的意思又像是按行分组输出。说按行分组输出把,你又直接跳过console.log(a)
发表于 2022-04-26 15:53:32 回复(0)
1.let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined

2.const 声明一个常量无法更改,所以TypeError
发表于 2022-03-06 22:44:40 回复(0)