新人请教js花括号相关问题

wyy1114978766 2018-06-14 03:43:17
请教以下代码中花括号的含义,和对象花括号,function花括号有啥区别?
最后想问下花括号还有没有其他用法?或者官方的基本解释
var varTest = 'test var OK.';
let letTest = 'test let OK.';

{
var varTest = 'varTest changed.';
let letTest = 'letTest changed.';
}

console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明
console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量
...全文
217 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyy1114978766 2018-06-14
  • 打赏
  • 举报
回复
非常感谢,原来对if()后不写括号这种行为有了新的认识
引用 3 楼 jslang 的回复:
当花括号{}的{出现在一条语句的首位,就会被解析成“复合语句块”。 当花括号{}出现在一个表达式中,就会被解析成对象字面量。 复合语句块有两个作用,一是可以让复合语句块中的多条语句当作一条语句来看待,如if()判断为真就会执行它后面的一条语句,也只能是一条语句,但是这一条语句可以是一个复合语句块。 PS: function ()的后面必须是复合语句 复合语句块第二个作用是产生“块级作用域”,在复合语句块中用let声明的是块级作用域变量,只在这个复合语句块中有效。出了复合语句块就会被系统回收(有闭包时除外)。 PS: var声明的是函数级作用域变量
天际的海浪 2018-06-14
  • 打赏
  • 举报
回复
当花括号{}的{出现在一条语句的首位,就会被解析成“复合语句块”。 当花括号{}出现在一个表达式中,就会被解析成对象字面量。 复合语句块有两个作用,一是可以让复合语句块中的多条语句当作一条语句来看待,如if()判断为真就会执行它后面的一条语句,也只能是一条语句,但是这一条语句可以是一个复合语句块。 PS: function ()的后面必须是复合语句 复合语句块第二个作用是产生“块级作用域”,在复合语句块中用let声明的是块级作用域变量,只在这个复合语句块中有效。出了复合语句块就会被系统回收(有闭包时除外)。 PS: var声明的是函数级作用域变量
本人QQ-554433626 2018-06-14
  • 打赏
  • 举报
回复
let是块级作用域,函数内部使用let定义后,对函数外部无影响。
本人QQ-554433626 2018-06-14
  • 打赏
  • 举报
回复
var定义的变量可以修改

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧