JavaScript基本概念(二)
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基本概念(二)的更多相关文章
- JavaScript的概念,引入,基本数据类型
08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...
- JavaScript 入门教程二 在HTML中使用 JavaScript
一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- 《JavaScript核心概念》基础部分重点摘录
注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...
- 一些有用的javascript实例分析(二)
原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- 理解JavaScript继承(二)
理解JavaScript继承(二) 5.寄生式继承 function object(o) { function F() {} F.prototype = o; return new F(); } fu ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
随机推荐
- 如何把由js生成的内容水平居中?
一.问题来源 如右侧的微博关注组件,直接用div的align居中没效果,我就开始百度了.即在<div> <script>.....</script> </d ...
- eclipse中切换jre后报错:Java compiler level does not match the version of the installed Java project facet.
项目移除原来的jre环境lib后,添加本地的jre,报错如下: Java compiler level does not match the version of the installed Java ...
- MVC 自定义AuthorizeAttribute 实现权限验证
MVC内置的AuthorizeFilter先于Action/Result过滤器执行,为网站权限验证提供了很好的一套验证机制. 通过自定义的AuthorizeAttribute可以实现对用户权限的验证. ...
- PAT-乙级-1023. 组个最小数 (20)
1023. 组个最小数 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定数字0-9各若干个.你可以以 ...
- 在smarty模板中嵌入php代码
我个人并不太喜欢smarty的语法,写起来比较啰嗦易出现匹配出错,但是旧项目中有许多工程都是采用它作模板.最近需要在此上稍微加一些PHP的内容,但我不想在模板控制层去一个一个assign,而想在模板文 ...
- oracle SQLserver 函数
1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value ...
- 关于.net中的脚本语言使用
基于.net中drl框架的脚本现在有很多,最近也由于工作的需要,目前有lua.python.ruby.javascript的.net实现,对ruby不怎么了解,python.lua.js就成了试验的对 ...
- c++调用matlab生成的Dll动态连接库
点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台: matlab 7.0(R ...
- nginx知识点
nginx 安装与配置文件 #cat /etc/nginx/nginx.conf #运行用户user www-data; #启动进程,通常设置成和cpu的数量相等worker_processes ...
- C#基础精华07(委托事件,委托的使用,匿名方法)
1.委托概述 委托是一种数据类型,像类一样(可以声明委托类型变量).方法参数可以是int.string.类类型 void M1(int n){ } √ void M2(string s){ } √ ...