JavaScript 基本概念(二) 操作符和语句

目录

说起操作符,回忆下上一篇文章末尾说的话。

操作符

一元操作符

++ 、--(前置和后置)

注意:

  • 和其他操作符混合使用时候的优先级问题;
  • 前置后置操作符的区别;
  • 这4个操作符对任何值都适用包括对象和字符串、布尔值;(能转换为数字值的转换,对象则先调用valueOf()方法,看能不能转换为数字,不能的话再调用toString(),然后再转)

+、- (正负操作符)

转换规则和上面两个操作符类似。

位操作符

  • ~按位非: 结果就是返回数值的反码;
  • &按位与: 结果是将两个数值的每一位与;
  • |按位或:  每一位都进行或操作;
  • ^按位异或:每一位都进行按位异或操作;
  • << 左移:将数值的所有位向左移动指定的位数,右侧补0填充空位;
  • >> 有符号右移:将数值的所有位向右移动,但保留符号位。用符号为填充空位;
  • >>> 无符号右移: 将数值的所有位无符号向右移动,用0填充空位。

布尔操作符

!逻辑非 适用于任何值(肯定有一套转换规则),都返回一个布尔值。 两个 !!操作符 不就是Boolean()转型函数的作用嘛??

&& 逻辑与  属于短路操作,适用于任意类型的操作数,而不仅仅是布尔值。

在有一个操作数不是布尔值的情况下,逻辑与操作不一定返回布尔值。规则:(加深印象)

  • 如果第一个操作数是对象,则返回第二个操作数
  • 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true时,才返回该对象。
  • 如果两个操作数都是对象,则返回第二个对象;
  • 如果有一个操作数为null、NaN、undefined则返回它们。

||逻辑或 也属于短路操作,在有一个操作数不是布尔值的情况下,逻辑与操作不一定返回布尔值。规则(用来加深印象)

  • 如果第一个操作数是对象,则返回第一个操作数
  • 如果第一个操作数的求值结果为false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个对象;
  • 如果有一个操作数为null、NaN、undefined则返回它们。

乘性操作符

乘法、除法和求模,作用和类C的语言类似,只不过操作数为非数值的情况下会执行自动的类型转换。 Number() 转型函数

详情参见JS高级程序设计(3)P47

乘法

  • 乘积如果超过了表示范围,则返回Infinity或-Infinity
  • 如果有一个操作数为NaN,则返回NaN
  • 如果Infinity与0相乘,则返回NaN,与非零数值相乘,返回+ -Infinity,取决于非零数值的符号。

其它操作符还有:

  • 加性操作符:加法,减法。注意问题类似:操作数类型转换。
  • 关系操作符: > 、<、<=、>=。注意问题:字符串则比较字符编码,布尔值则先转化为数值。任何与NaN的比较都是false。
  • 相等操作符:==(!=)先转换再比较、=== (!==) 仅比较不转换。
  • 条件操作符:var a =boolean_exp ? true_value : false_value;
  • 赋值操作符: =  注意类型转换。


语句部分

由于该部分和Java等其他语言很类似,不做过多的描述,仅仅记录JavaScript有哪些常用的语句。

if 语句

基本语法

if (condition) statement1 else statement2

do-while 语句

基本语法

do {

  statement

} while (expression) ;

while 语句

基本语法

while (expression) {

  statement

}

for 语句

基本语法

for (initialization; expression; post-loop-expression)

  statement

for-in 语句

基本语法 (属性可没有顺序哟)

for (property in expression)

  statement

label语句

基本语法

label : statement

基本用途:用于合理的跳出多重循环,比较有帮助

break 和 continue 语句

基本用途: 用于在循环中精确地控制代码的执行。

with 语句

基本用途:将代码的作用域设置到一个特定的对象中。 (不建议使用,读代码的时候知道怎么回事儿即可)

switch 语句

基本语法:

switch (expression) {

  case value : statement

    break;

  case value: statement

    break;

  default: statement

}

JavaScript基本概念(二)的更多相关文章

  1. JavaScript的概念,引入,基本数据类型

    08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...

  2. JavaScript 入门教程二 在HTML中使用 JavaScript

    一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...

  3. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  4. 《JavaScript核心概念》基础部分重点摘录

    注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...

  5. 一些有用的javascript实例分析(二)

    原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...

  6. 如何对Javascript代码进行二次压缩(混淆)

    如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...

  7. 理解JavaScript继承(二)

    理解JavaScript继承(二) 5.寄生式继承 function object(o) { function F() {} F.prototype = o; return new F(); } fu ...

  8. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  9. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

随机推荐

  1. hibernate.cfg.xml配置(Oracle+c3p0)

    说明:数据库:Oracle10g:连接池:c3p0 结构: 一.配置hibernate.cfg.xml <?xml version="1.0" encoding=" ...

  2. iOS利用HealthKit框架从健康app中获取步数信息

    微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...

  3. Java IO5:序列化与反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  4. Git教程之删除文件(8)

    在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交:

  5. 第十七章 委托 第十八章 Attribute 第十九章 可空值类型

    1.委托揭秘 定义一个委托,编译器会生成一个继承自System.MulticastDelegate的类,所有的委托都继承自该类. 由于委托是类,所以能定义类的地方,都能定义委托. 委托内部有一个tar ...

  6. No bean named 'transactionManager' is defined

    2016-10-20 23:27:17.771 INFO 7096 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped &quo ...

  7. Permutation Test 置换检验(转)

    Permutation Test 置换检验 显著性检验通常可以告诉我们一个观测值是否是有效的,例如检测两组样本均值差异的假设检验可以告诉我们这两组样本的均值是否相等(或者那个均值更大).我们在实验中经 ...

  8. HBase Shell输入命令无法删除问题解决技巧

    一.引言: HBase shell使用过程中,使用CRT客户端,命令输入后无法删除一直困绕着我,今天终于受不了,几番度娘,谷哥之后,终于有了解决方法,特共享给大家. 二.操作步骤 secureCRT中 ...

  9. easyui datagrid 多表头设置

    最近在做二维报表,要求报表的表头自定义.在网上找了好久二维报表的插件,一直找不到合适的.后来就用easyui 中的datagrid替代了一下. 根据实际需求,统计的信息可能不是一个模块中的字段信息,所 ...

  10. linux系统灵活运用灯[android课程3]

    1,文件如何生成: ----- ---- (二),把hello例子贴过来后,编译问题: 在编译Android 4.0驱动的时候,使用到了proc_dir_entry结构体中的owner成员,但是编译的 ...