重学前端
程劭非(winter)
前手机淘宝前端负责人
105348 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
开篇词+学习路线+架构图 (3讲)
重学前端
15
15
1.0x
00:00/00:00
登录|注册

JavaScript语法(二):你知道哪些JavaScript语句?

for await of循环
for of循环
for in循环
普通for循环
do while循环
while循环
函数声明
class声明
let和const声明
var声明
debugger语句
try语句和throw语句
with语句
break语句和continue语句
return语句
循环语句
switch语句
if语句
空语句
语句块
壣明型语句
语句
JavaScript语法

该思维导图由 AI 生成,仅供参考

你好,我是 winter。
我们在上一节课中已经讲过了 JavaScript 语法的顶层设计,接下来我们进入到更具体的内容。
JavaScript 遵循了一般编程语言的“语句 - 表达式”结构,多数编程语言都是这样设计的。我们在上节课讲的脚本,或者模块都是由语句列表构成的,这一节课,我们就来一起了解一下语句。
在 JavaScript 标准中,把语句分成了两种:声明和语句,不过,这里的区分逻辑比较奇怪,所以,这里我还是按照自己的思路给你整理一下。
普通语句:
声明型语句:
我们根据上面的分类,来遍历学习一下这些语句。

语句块

我们可以这样去简单理解,语句块就是一对大括号。
{
var x, y;
x = 10;
y = 20;
}
语句块的意义和好处在于:让我们可以把多行语句视为同一行语句,这样,if、for 等语句定义起来就比较简单了。不过,我们需要注意的是,语句块会产生作用域,我们看一个例子:
{
let x = 1;
}
console.log(x); // 报错
这里我们的 let 声明,仅仅对语句块作用域生效,于是我们在语句块外试图访问语句块内的变量 x 就会报错。

空语句

空语句就是一个独立的分号,实际上没什么大用。我们来看一下:
;
空语句的存在仅仅是从语言设计完备性的角度考虑,允许插入多个分号而不抛出错误。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

JavaScript语法(二):深入了解各种JavaScript语句类型 本文详细介绍了JavaScript语法中的各种语句类型,包括if语句、switch语句、循环语句、return语句、break和continue语句以及with语句等。通过实际代码示例和解释,读者能够快速了解各种语句的用法和特点,为进一步深入学习JavaScript语法打下基础。特别是对于一些新用法,如for of循环和for await of循环,以及带标签的break和continue语句,都进行了重点介绍,为读者提供了更多的学习参考。此外,文章还涵盖了try和throw语句、debugger语句、var、let和const声明、class声明以及函数声明等内容。读者可以通过本文快速了解JavaScript语句的基本知识,为进阶学习提供了良好的参考资料。文章内容通俗易懂,适合初学者快速了解JavaScript语句的基本知识,同时也为进阶学习提供了良好的参考资料。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《重学前端》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • 尤璐洁
    老师可以讲讲arguments吗,它是挂在哪里的呢,是个可迭代对象,但是不知道它是哪个的属性

    作者回复: arguments是函数创建的环境记录上的一个变量,这个东西比较特殊的地方是它跟参数的绑定关系,其它没什么。 看MDN好了 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

    2019-11-07
    1
  • 洛克不菲勒
    for(let e of [1, 2, 3, 4, 5]) console.log(e); 老师你好,注意到文中有这样的写法,for()后面没有大括号这种写法好吗? 一直都有这样的疑问,if语句也有这样的问题

    作者回复: 反正JS有这个用法,至于好不好,每个人有不同的审美,不过多数时候,这由你团队的代码规范决定。

    2019-09-11
    2
    1
  • 润群
    关于switch和ifelse的效率我有个疑问呢,假设ifelse的判断很多,然后判断到末尾才找到匹配的项,这样的话是不是比switch多了好多判断呢,因为我理解的switch不是只判断一次么?

    作者回复: 说了半天这点性能意义不大。

    2019-06-28
    2
    1
  • K4SHIFZ
    请问老师,规范中的Statement和Declaration到底有什么区别?不都是声明的意思吗?

    作者回复: Statement是语句,Declaration是声明,但是我觉得这个分类不好,因为语句里还有var语句也是声明性质的。

    2019-04-02
    1
  • 渴望做梦
    winter老师,这个异步生成器函数是个什么东东啊,从网上搜了一下,也没找到相关介绍。

    作者回复: 搜 async generator function

    2019-07-29
    2
  • mfist
    遍历了下window上面的全局对象,上面有Symbol.iterator的原生属性有15个,主要Array Set Map String相关的。当然还有很多宿主环境提供的全局对象有Symbol.iterator属性,他们有个共同的特征:都是些集合性质的数据结构。 0: "Array" 1: "String" 2: "Uint8Array" 3: "Int8Array" 4: "Uint16Array" 5: "Int16Array" 6: "Uint32Array" 7: "Int32Array" 8: "Float32Array" 9: "Float64Array" 10: "Uint8ClampedArray" 11: "BigUint64Array" 12: "BigInt64Array" 13: "Map" 14: "Set"
    2019-04-04
    2
    74
  • Chuck
    Object.getOwnPropertyNames(window).filter(prop => { return window[prop] && window[prop].prototype && window[prop].prototype[Symbol.iterator] }) Array,String,Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array,Uint8ClampedArray,BigUint64Array,BigInt64Array,Map,Set,SourceBufferList,RTCStatsReport,Plugin,PluginArray,MimeTypeArray,MIDIOutputMap,MIDIInputMap,AudioParamMap,URLSearchParams,TouchList,TextTrackList,TextTrackCueList,StyleSheetList,StylePropertyMapReadOnly,StylePropertyMap,SVGTransformList,SVGStringList,SVGPointList,SVGNumberList,SVGLengthList,RadioNodeList,NodeList,NamedNodeMap,MediaList,Headers,HTMLSelectElement,HTMLOptionsCollection,HTMLFormElement,HTMLFormControlsCollection,HTMLCollection,HTMLAllCollection,FormData,FileList,DataTransferItemList,DOMTokenList,DOMStringList,DOMRectList,CSSUnparsedValue,CSSTransformValue,CSSStyleDeclaration,CSSRuleList,CSSNumericArray,webkitSpeechGrammarList,KeyboardLayoutMap,MediaKeyStatusMap
    2019-06-10
    1
    49
  • timik
    老师,我记得有的书上或者是资料上说超过五次的if else 就最好用 switch case来替换。这样效率更好。您这里为什么说不用这个呢?
    2019-05-07
    4
    14
  • 阿成
    大概就这些? Array, Map, Set, String, Float32Array, Float64Array, Int8Array, Int16Array, Int32Array, Uint8Array, Uint16Array, Uint32Array, Uint8ClampedArray
    2019-04-02
    9
  • break
    感觉这文章应该从后往前看😆
    2019-06-14
    7
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部