js:语言精髓笔记3----语句

JS语句分类:

  • 声明语句:

    • 变量声明语句;
    • 标签声明语句;
    • 函数声明语句;
  • 表达式语句:(表达式加分号)
    • 变量赋值语句:具有声明一个变量的隐式效果;
    • 函数调用语句;
    • 属性赋值语句;
    • 方法调用语句;
  • 分支语句:
    • 条件分支语句;
    • 多重分支语句;
  • 循环语句:
    • for()
    • for...in
    • while
    • do..while
  • 控制结构:
    • 继续执行子句;
    • 中断执行子句;
    • 函数返回子句
    • 异常触发语句;
    • 异常捕获与处理;
  • 其他:
    • 空语句;
    • with语句;

声明语句与赋值语句:

  • 声明语句(显示声明)一定就有var,它是语法符号,不是运算符;
  • 当语句中既有声明(隐式或显示)又有赋值的时候,等号其实是语法分隔符而不是运算符,固不能用“+=”等 代替;
  • 当仅使用赋值语句(变量已经声明),此时等号是运算符,可以用其他运算符代替;

函数调用:

  • 具名函数直接调用: funtion foo(){}; foo();
  • 匿名函数通过引用调用: foo = function(){}; foo();
  • 没有引用的匿名函数调用:
    • (function(){}()):强制运算(最大的小括号)符使函数调用运算并执行
    • (function(){})():强制运算符运算“函数直接量声明”这个表达式,并返回引用,然后通过函数调用运算符操作引用;
    • void function(){}():void调用函数但忽略返回值;
  • 注意function(){}(),会被解析成两个语句,固无法执行;

流程控制:一般子句

  • 标签声明:标签可以与变量重名,因为它是另外一种独立的语法元素;
  • break子句:使用范围:标签化语句(后面必须跟label),循环,switch分支;
  • continue子句:仅对循环有意义;可以使用标签,但只能对单个循环语句有意义;因为continue不允许跳转到当前/外层的单个循环语句的起始之外。
  • return子句:不指定返回值的话返回undefined,注意和void的区别;

流程控制:异常

  • finally语句块总是在try/catch块退出之前被执行,即使有return或break;
时间: 2024-08-04 15:43:35

js:语言精髓笔记3----语句的相关文章

js:语言精髓笔记1--语法

标识符: 命名: 语法以及类型----语法关键字 值(的存储位置)----变量和常量 绑定: 语法关键字对逻辑的绑定----作用域限定 变量对位置的绑定---变量生存周期的限定 声明:约定变量的生存周期和逻辑作用域: 标识符语义关系: 与值相关: 类型 变量: 直接量 对象 与逻辑相关: 控制流程语句: 标签声明 一般流程控制语句 异常 与值和逻辑都相关: 表达式: 值运算 对象存取 逻辑语句: 顺序 分支 循环 其他: 注释 JS引擎运行及响应错误:1.语法分析(语法分析错误):2执行(执行异

js:语言精髓笔记5----语言分类

计算模型:源于对计算过程的不同认识: 基于不同计算模型一般分为: 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 基于程序本质分类: 命令式: 结构化编程(冯诺依曼:计算机系统以存储和处理为核心)[面向存储的编程]: 面向对象编程: 说明式: 函数式: 其他: //命令式语言基于存储结构进行算法设计:即:算法+数据结构=程序:数据的表形形式是编程的根本: 命令式语言面临的问题:如何抽象数据存储: 结构化编程:通过运算去改变内存: 结构: 控制结构:顺序,分支,循环: 组织结构:

js:语言精髓笔记2--表达式

单词形式运算符:typeof,in,void,instanceof,new,delete. 表达式:由运算符和运算元构成:JS中没有运算符的表达式称为单值表达式:没有运算元,孤立与代码上下文的运算符是不符合语法的: 单值表达式: this引用: 变量引用: 直接量: null undefined 字符串 布尔值 数值 正则表达式 基本表达式: 单值表达式 数组初始器:[] 对象初始器:{} 表达式分组运算:()  运算符按结果值的分类: 一般表达式运算:(会强制类型转换) 数值运算 位运算 布尔

js:语言精髓笔记4----面向对象编程概要

实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号:所以注意这不是函数调用: 直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因为直接量的声明中不包括运算过程,而初始器的声明中可以包括运算过程. 直接量:一般分为6种,包括正则表达式声明:在引擎看来,其值是在编译期就确知的: 初始器:包括函数,对象,数组声明:其本身可能是无法预期的. 对象: delete:能删除对象的大多数成员,包括全局对象Global的成员:不能删除var

js:语言精髓笔记12--动态语言特性(2)

对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console.log(obj1.value); // 100 语法声明阶段的重写: //会报错,一般引擎不承认在表达式中声明的标识符: (function Object2() {}).prototype.value = 100; 重写: 对内部对象系统的影响: 重写内置构造器:任意构造器的原型属性不受内置构造器重

js:语言精髓笔记13--语言技巧

消除代码全局变量名占用: //本质是使用匿名函数: void function(x, y, z) { console.log(x + y + z); }(1,2,3); //要使函数内的变量不被释放,需要使用引用: 一次性的构造函数: //维护原型链,保证标识符重写后,实例.constructor仍指向构造器: var Instance = function() {}; Instance.prototype = { constructor: Instance } Instance = new I

javascript语言精髓笔记

javascript是一门浏览器语言,对于后台攻城湿们.则是这样对其定义的 1. js是一门前端语言,因为js通常是web中的view部分,用来渲染最终呈现给用户的页面. 2. js是一门弱类型语言和解释性语言,没有使用编译器(编译器会检查语法错误,同样性质的比如php,ruby,python等.当然,不能说完全没有编译过程,只是不是严格意义上的编译),因为编译的目的最终应该是生成可执行的代码,而不是中间结果. 本文将关注两个方面 1.js重要概念 2.js小tips  主要关注容易被忽略的小问

JS 语言核心(JavaScript权威指南第六版)(阅读笔记)

前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢参悟,在这之前需要做的是能够运用它来开发,那么了解一些基础特性非常有必要,通常这些特性是需要经验积累,从各种坑中累计出来,但是还有一种看似很笨却很有效的学习方法.那就是将别人的经验记录下来,有事没事都拿出来看看,集合开发中的经验,这会非常有效. 调试工具 firebug

黑马程序员------C 语言学习笔记---C语言的表达式和语句

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.1     C语言的表达式和语句 由运算符讲常量,变量,和函数调用连接起来的式子称为表达式,常见的形式为赋值语句,函数调用语句,空语句. l 赋值语句:先计算=右边的值然后将其赋值给左边的变量 注意点:变量必须先定义后使用: