今天在阅读同事写的代码过程中发现这样一段javascript代码:
function geturl(uitype,_backurl) {
uitype = uitype||1;
var _burl = _backurl||this.location.href;
....
}
里面的"||"运算符,在我的印象里他返回的应该布尔型,true或者fasle,但是这个函数中的变量肯定不是要返回布尔型。
于是查资料发现问题所在:
javascript 使用下面的规则来把非 Boolean 值转换为 Boolean 值:
1.所有对象都被认为是 true。
2.字符串当且仅当为空时才被认为是 false。
3.null和undefined被认为是 false。
4.数字当且仅当为 0 时才是 false。
这里就能理解 var _burl = _backurl||this.location.href; 这句话
当_backurl参数为空的时候 _burl就等于this.location.href的值,
延伸:
var uitype = 0||1; 返回 1
var uitype = 0||"abc"; 返回 abc
var uitype = 1||"abc"; 返回 1
var uitype = 0||undefined; 返回 undefined
var uitype = undefined||0; 返回 0
javascript运算符与表达式:
括号 |
(x) [x] |
中括号只用于指明数组的下标
|
求反、
自加、
自减 |
-x |
返回 x 的相反数 |
!x |
返回与 x (布尔值)相反的布尔值 |
x++ |
x 值加 1,但仍返回原来的 x 值 |
x-- |
x 值减 1,但仍返回原来的 x 值 |
++x |
x 值加 1,返回后来的 x 值 |
--x |
x 值减 1,返回后来的 x 值 |
乘、除 |
x*y |
返回 x 乘以 y 的值 |
x/y |
返回 x 除以 y 的值 |
x%y |
返回 x 与 y 的模(x 除以y 的余数) |
加、减 |
x+y |
返回 x 加 y 的值 |
x-y |
返回 x 减 y 的值 |
关系运算 |
x<y x<=y x>=y x>y |
当符合条件时返回 true 值,否则返回 false 值 |
等于、 不等于 |
x==y |
当 x 等于 y 时返回 true 值,否则返回 false 值 |
x!=y |
当 x 不等于 y 时返回 true 值,否则返回 false 值 |
位与 |
x&y |
当两个数位同时为 1 时,返回的数据的当前数位为 1,其他情况都为 0 |
位异或 |
x^y |
两个数位中有且只有一个为 0 时,返回 0,否则返回 1 |
位或 |
x|y |
两个数位中只要有一个为 1,则返回 1;当两个数位都为零时才返回零 |
位运算符通常会被当作逻辑运算符来使用。它的实际运算情况是:把两个操作数(即 x 和 y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。由于“真”值在电脑内部(通常)是全部数位都是 1 的二进制数,而“假”值则是全部是 0 的二进制数,所以位运算符也可以充当逻辑运算符。 |
逻辑与 |
x&&y |
当 x 和 y 同时为 true 时返回 true,否则返回 false |
逻辑或 |
x||y |
当 x 和 y 任意一个为 true 时返回 true,当两者同时为 false 时返回 false |
逻辑与/或有时候被称为“快速与/或”。这是因为当第一操作数(x)已经可以决定结果,它们将不去理会 y 的值。例如,false && y,因为x == false,不管 y 的值是什么,结果始终是 false,于是本表达式立即返回 false,而不论 y 是多少,甚至 y 可以导致出错,程序也可以照样运行下去。 |
条件 |
c?x:y |
当条件 c 为 true 时返回 x 的值(执行 x 语句),否则返回 y 的值(执行 y 语句) |
赋值、 复合运算 |
x=y |
把 y 的值赋给 x,返回所赋的值 |
x+=y x-=y x*=y x/=y x%=y |
x 与 y 相加/减/乘/除/求余,所得结果赋给 x,并返回 x 赋值后的值
|
分享到:
相关推荐
加法(+)、减法(-)、乘法(*)和除法(/)是基础,但为了支持括号和更复杂的运算,我们需要了解优先级和运算顺序。在JavaScript中,括号用于改变运算顺序,表达式`a * (b + c)`会先计算括号内的`b + c`,然后将...
- 处理输入:根据点击的按钮,JavaScript会将数字或运算符添加到当前计算表达式中。 - 计算结果:当用户点击等于号(=)时,JavaScript会对当前表达式进行求值,使用内置的数学函数(如`Math.pow`、`Math.sqrt`等...
通过分析和理解这个源代码,开发者不仅可以掌握JavaScript的基本语法,还能了解到事件处理、DOM操作以及如何用JavaScript实现与用户交互的功能。 总结来说,这个"Javascript做的计算器源代码"涵盖了HTML和...
JavaScript最初由Netscape公司开发,名为LiveScript,后来更名为JavaScript,以利用当时Java的流行度。与Sun公司的Java不同,JavaScript并非一种面向对象的语言,而是基于对象的,它允许直接操作内置对象,如DOM...
JavaScript计算器是一种常见的编程练习,它涉及HTML、CSS和JavaScript三个主要技术栈,是初学者学习网页动态交互功能的绝佳案例...通过这个项目,你可以了解到网页应用的基本工作原理,并为更复杂的应用开发打下基础。
每次按键或运算后,结果应实时显示在屏幕上。这可以通过修改相关元素的`innerHTML`属性来完成。同时,为了保持界面的整洁,计算器的布局和样式也需精心设计。在白色背景上,简洁的字体、合适的边距和对齐方式可以...
3. **逻辑运算符**:包括 `&&`(逻辑与),`||`(逻辑或),`!`(逻辑非)。 条件语句: 1. **if 语句**:用于基于条件执行不同代码块。 ```javascript if (condition) { // 条件为真时执行的代码 } ``` 2. **if-...
操作符则用于进行算术、比较和逻辑运算,理解它们对于编写逻辑严谨的代码至关重要。 接着,深入学习JavaScript的控制结构,包括条件语句(if...else、switch)和循环(for、while、do...while),这些都是编写流程...
### JavaScript Pocket Reference ...通过以上章节的概述,读者可以了解到《JavaScript Pocket Reference》涵盖的核心概念和技术细节。这本书对于希望快速查阅JavaScript语言特性的开发人员来说是非常有价值的资源。
JavaScript中的数学运算和逻辑判断在这里起到关键作用。 通过分析这些JavaScript小游戏,你可以深入了解如何运用上述知识点构建互动的网页应用。每个游戏都可能包含独特的设计和实现,提供了一个实践和学习...
这些功能将需要额外的JavaScript逻辑和可能的DOM操作。 最后,测试是任何项目的关键部分。我们需要确保计算器在各种输入条件下都能正确工作,包括边界条件和异常情况。这可以通过编写单元测试和集成测试来实现,...
操作符用于执行比较、算术和逻辑运算。 函数是JavaScript中的重要组成部分,可以封装代码并实现复用。函数可以有参数和返回值,也可以作为一等公民参与程序的其他部分。了解闭包和作用域也是学习JavaScript的关键,...
- 表达式与操作符:包括算术、比较、逻辑和赋值等操作符,以及表达式的运算规则。 - 控制流:如条件语句(if...else)、循环(for、while、do...while)以及switch语句。 - 函数:定义函数的方式,参数传递,以及...
在这个项目中,学习者将了解到`Document`对象的各种元素属性修改、元素操作以及元素节点操作,这些都是构建交互式网页的关键。特别是,`Document`对象的元素属性修改可以让网页元素动态响应用户操作,如商品图片的...
当用户点击数字或运算符按钮时,会触发对应的事件处理函数。这些函数会根据用户输入更新显示屏的内容,并可能存储当前的操作数和运算符。JavaScript的事件模型包括捕获阶段、目标阶段和冒泡阶段,但在这个简单的例子...
JavaScript是一种广泛应用于...通过分析和学习这些代码,你可以了解到实际项目中如何将上述知识点结合在一起,实现一个完整的游戏。无论是初学者还是有经验的开发者,都能从中获益,加深对JavaScript游戏开发的理解。
实现这些功能,我们需要了解并使用JavaScript的Math对象,它提供了许多数学函数,如`Math.pow()`(指数运算)、`Math.sqrt()`(平方根)、`Math.log()`(对数)、`Math.sin()`、`Math.cos()`和`Math.tan()`(三角...
### Object_Oriented_Javascript #### 重要概念与知识点概览 **JavaScript**作为一种流行的编程语言,在Web开发中占据着核心...这些知识点不仅适用于初学者,也对希望深入了解JavaScript内部机制的开发者非常有用。