今天看JavaScript内核 系列的时候看到一个程序想到的一些东东。
一般的,||运算符都是用来判断两边的结果,最后返回的是true或者false,而在JavaScript中却有一个比较好玩的现象。
alert(1||2);
alert(1>2||2>3);
如果不去运行程序,我的想法就是:
true
false
而实际结果呢?
1
false
看到这个结果的时候的确是感觉比较奇怪的,也就是说如果||两边没有任何的比较,那首先返回的结果就是左边的那个。而&&与之相反
//定义一个Address类
function Address(street,xno){
this.street = street || 'Huang Quan Road';
this.xno = xno || 135;
this.toString = function(){
return "street : " + this.street + ", No : " + this.xno;
}
}
//定义另一个"类",Person
function Person (name, age, addr) {
this.name = name || 'unknown';
this.age = age;
this.addr = addr || new Address(null, null);
this.getName = function () {return this.name;}
this.getAge = function(){return this.age;}
this.getAddr = function(){return this.addr.toString();}
}
alert(1||2); // 1
alert(1>2||2>3); //false
alert(1|2); //3
alert(1>2|2>3); //0
alert(1&&2); //2
alert(1&2); //0
alert(1>0&&2>1); //true
alert(1>0&2>1); //1
//通过new操作符来创建两个对象,注意,这两个对象是相互独立的实体
var jack = new Person('jack', 26, new Address('Qing Hai Road', 123));
var abruzzi = new Person('abruzzi', 26);
var per=new Person();
alert(per.name); //unknown
alert(per.age); //undefined
alert(per.addr); //street : Huang Quan Road, No : 135
var add=new Address('WuXi Gaolang',1600);
alert(add); //street : WuXi Gaolang, No : 1600
alert(jack.getName()); //jack
alert(jack.getAge()); //26
alert(jack.getAddr()); //street : Qing Hai Road, No : 123
alert(abruzzi.getName()); //abruzzi
alert(abruzzi.getAge()); //26
alert(abruzzi.getAddr()); //street : Huang Quan Road, No : 135
个人还不太理解的就是(位移)
alert(1|2); //3
alert(1>2|2>3); //0
alert(1>0&&2>1); //true
alert(1>0&2>1); //1
分享到:
相关推荐
这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个完整的知识体系,帮助读者从入门到精通。 1. **JavaScript基础** - 变量与数据类型:JavaScript支持动态类型,包括基本类型(如数字、...
JavaScript的基础语法包括变量声明(var、let、const),数据类型(Number、String、Boolean、Null、Undefined、Object、Symbol、BigInt),运算符(算术、比较、逻辑、位、三元、赋值、解构赋值),流程控制(条件...
8. **逻辑运算符**:逻辑运算符`&&`和`||`用于组合布尔值。`a && b`当a为真时,返回b的值;当a为假时,返回a的值。`a || b`当a为真时,返回a的值;当a为假时,返回b的值。在表达式 `(1===1) || (3)`中,第一个条件为...
原型是JavaScript中实现继承的关键机制,每个对象都有一个__proto__属性,指向其构造函数的原型对象。理解原型链对于理解JavaScript的继承至关重要。 3. **作用域与闭包** JavaScript有函数作用域和块级作用域,...
JavaScript学习手册是一个深入探讨Web开发中重要编程语言——JavaScript的资源。JavaScript,作为WEB标签所指的,是用于创建交互式网页的脚本语言。它通常与HTML和CSS一起使用,构建动态、响应式的用户体验。 ...
JavaScript是一种广泛应用于网页和网络应用的编程语言,它赋予了网页动态交互的能力,使得用户能够与网站进行实时的互动。JavaScript标准参考教程是阮一峰编写的,这是一本全面介绍JavaScript语言特性和实践的开源...
原型是JavaScript实现继承的关键机制,每个对象都有一个`__proto__`属性,指向创建它的构造函数的原型。 八、数组与集合 JavaScript的Array对象用于存储多个值。它提供了多种方法,如push、pop、shift、unshift、...
运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。例如:加法运算符(+)、减法运算符(-)、等号运算符(==)、不等号运算符(!=)、逻辑与(&&)、逻辑或(||)等。这些运算符在JavaScript中有着广泛的...
8. **运算符**:JavaScript支持各种算术、比较、逻辑和位运算符,理解它们的工作原理对于编写复杂的逻辑至关重要。 9. **控制流语句**:如`if...else`、`switch`、`for`、`while`等,用于决定代码的执行路径。 10....
3. 运算符:包括算术运算符(+、-、*、/等)、比较运算符(==、===、<、>等)、逻辑运算符(&&、||、!)和赋值运算符(=、+=、-=等)。 4. 控制流:条件语句(if...else、switch)、循环(for、while、do...while)...
- 运算符:包括算术运算符、比较运算符、逻辑运算符以及赋值运算符等。 - 控制流:涉及条件语句(如if...else)和循环语句(如for、while)。 - 函数:用于封装可重用代码,包括函数声明、函数表达式和箭头函数。...
- 运算符与表达式:涵盖算术运算符、比较运算符、逻辑运算符、赋值运算符等,以及条件表达式和三元运算符的使用。 - 控制流程:介绍if...else语句、switch语句、循环(for、while、do...while)以及break和...
它基于JavaScript的一个子集,因此可以和JavaScript无缝对接。在处理数据存储时,我们可以使用原生的JavaScript方法,比如数组和对象字面量,来存储复杂的数据结构。JSON的引入使得数据的保存、传输和解析变得简单...
文章中还提到一个非常有趣的发现,即多个运算符的连续使用。例如,可以将多个`~`, `!`, `+`, `-`连续使用,而函数仍然能够正常执行。但是,如果连续出现三个及以上的`+`或`-`,或者连续两个`+`或`-`后跟其他符号(如...
==、>、<、>=、)、逻辑运算符(&&、||、!)以及赋值运算符(=、+=、-=、*=、/=、%=)等。 5. **函数** - 函数使用`function`关键字声明,如`function sayHello() {console.log("Hello!");}`。 - 可以通过`return...
- **逻辑运算符、逗号运算符**:在特定场景下的用途。 7. **表达式** - 如何正确构建有效的表达式,理解优先级和计算顺序。 8. **循环结构** - **for循环**:基本语法和应用场景。 - **for...of**:遍历可迭代...
3. **原型和原型链**:JavaScript的对象可以通过原型进行扩展,每个对象都有一个proto属性指向它的原型,形成了原型链。通过原型链可以实现继承和共享属性。 4. **函数和闭包**:函数是JavaScript的一等公民,可以...
- **使用逻辑运算符赋值:** ```javascript let x = y || defaultX; // 如果 y 为真,则 x=y,否则 x=defaultX ``` #### 九、箭头函数简化 **知识点13:箭头函数简化** - **单行表达式的简洁形式:** ```...
==)和逻辑运算符(&&、||、!)等。 - 控制流:条件语句(if...else、switch)、循环(for、while、do...while)和跳转语句(break、continue)。 2. **函数与作用域** - 函数定义:使用function关键字创建函数,...