布尔值

js 逻辑运算符

我怕爱的太早我们不能终老 提交于 2020-01-02 23:09:18
js 逻辑运算符 逻辑运算符通常用于布尔型(逻辑)值。这种情况下,它们返回一个布尔值。然而,&& 和 || 运算符会返回一个指定操作数的值,因此,这些运算符也用于非布尔值。这时,它们也就会返回一个非布尔型值。 描述 逻辑运算符如下表所示 (其中expr可能是任何一种类型, 不一定是布尔值): 运算符 语法 说明 逻辑与,AND(&&) expr1 && expr2 若 expr1 可转换为 true,则返回 expr2;否则,返回 expr1。 逻辑或,OR(||) expr1 || expr2 若 expr1 可转换为 true,则返回 expr1;否则,返回 expr2。 逻辑非,NOT(!) !expr 若 expr 可转换为 true,则返回 false;否则,返回 true。 如果一个值可以被转换为 true,那么这个值就是所谓的 truthy,如果可以被转换为 false,那么这个值就是所谓的 falsy。 会被转换为 false 的表达式有: null; NaN; 0; 空字符串("" or ‘’ or ``); undefined 记住上面这五个就行了 尽管 && 和 || 运算符能够使用非布尔值的操作数, 但它们依然可以被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值。如果要 显式地将它们的返回值(或者表达式)转换为布尔值 ,请使用**双重非运算符(即!

对象防篡改

*爱你&永不变心* 提交于 2019-12-31 11:11:37
ES5的放篡改方法: Object.preventExtensions(); //限制扩展后 不能添加 新属性方法 Object.isExtensible(obj); //布尔值 Object.seal(); //将对象密封,在“preventExtensions”的基础上吧[configarable]设置为false, 不能删除 已有的属性方法,但是可以修改属性值 Object.IsSealed(obj); //布尔值 Object.freeze(obj); //在“seal”的基础上将数据属性的[writable]设置为false,变成只读,不过访问器属性[[set]]可改写。 Object.IsFrozen(obj); //布尔值 防篡改的对象执行错误操作后(比如添加新属性/方法),在非严格模式下会静候失败或忽略,在严格模式下会报错。 这些方法主要用在写插件/模块上,防止被其他程序修改。 在ES6中,有个Reflect对象,提供了和 proxy handler methods 同名的各种方法,这些方法中有不少名字和Object所提供的方法一致,效用也相同。阮一峰先生在他的《ES6入门》提到,其设计目的是将Object中明显属于语言层面的方法放到Reflect上,未来的这类新方法只部署到Reflect上。MDN上提到,Reflect不是一个Function对象,不是构造器

JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)

£可爱£侵袭症+ 提交于 2019-12-30 05:28:33
一、介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容。 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js更是难,中间需要不断的积累与重温。 本书不是读一两遍就能把这书吃透,需要多读,可谓温故而知新,可以为师矣。 很多人看这些厚的书都是三天打鱼两天晒网,很少能看下去,能记住的东西往往前3章的内容,所以我写博客就是为了能和大家一起来读这本书,一起学JS。 二、基本概念(灵魂篇) 上一篇是躯壳篇讲的是一些了解性的东西,而接下来便说内涵(数据类型和操作符),换作中文来看就如同让你理解词和含义,语句的含义,就像将这些字和语句注入灵魂。 同系列: 第一篇:JavaScript--我发现,原来你是这样的JS(初识) 第二篇:JavaScript--我发现,原来你是这样的JS(基础概念--躯壳篇) 三、数据类型 js的数据结构有6种,5种基本类型和一种复杂类型。js中不支持任何自定义的数据类型,所以说就这6种就够了。 5种基本数据类型: Undefined Null Boolean Number String 1种复杂类型: Object类型 1.1 typeof操作符 该操作符可以检测某变量是什么数据类型。 typeof返回的值: "undefined" -- 表示这个值没有被定义 "string"

js中的一些隐式转换和总结

浪尽此生 提交于 2019-12-30 05:28:07
js中的不同的数据类型之间的比较转换规则如下: 1. 对象和布尔值比较 对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字 [] == true; //false []转换为字符串'',然后转换为数字0,true转换为数字1,所以为false 2. 对象和字符串比较 对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。 [1,2,3] == '1,2,3' // true [1,2,3]转化为'1,2,3',然后和'1,2,3', so结果为true; 3. 对象和数字比较 对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较。 [1] == 1; // true `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true 4. 字符串和数字比较 字符串和数字进行比较时,字符串转换成数字,二者再比较。 '1' == 1 // true 5. 字符串和布尔值比较 字符串和布尔值进行比较时,二者全部转换成数值再比较。 '1' == true; // true 6. 布尔值和数字比较 布尔值和数字进行比较时,布尔转换为数字,二者比较。 true == 1 // true 许多刚接触js的童鞋看到这么多的转换规则就懵圈了,其实规律很简单,大家可以记下边这个图 如图,任意两种类型比较时

Java基础

大兔子大兔子 提交于 2019-12-25 20:49:16
运算符 ** 自动类型的转换:表达式的最终结果会转化为参与运算的最高类型 关于自增: I++:自增后执行 ++i:先执行自增 例:System.out.println(3++);//3 System.out.println(++3);//4 关于赋值(举例说明): a += 2 == a = a+2 一个=是赋值,两个=是比较 例: 关于比较运算: 比较运算的结果:boolean 真与假 Instanceof:用于引用数据类型的比较 判断一个对象是否属于某个类的实例 逻辑运算:当有多个比较运算参与其中,获取一个结果 &:且,两边结果同时为真,才为真 |:或,有一边结果为真,则为真 !:非,取反 具有短路效果(当一边可以确定最终结果时,另外一个判断不执行,执行效率更高) &&:双与,与&运行结果一致 ||:双或,与|运行结果一致 关于三目运算(三元运算): X?Y:Z:当X为true时,结果为Y,反之,结果为Z 表达式的结果可以用变量接收,也可以直接打印 当使用变量接收的时候,建议Y与Z的类型一致:若是不一致,可以使用Object接收 三目运算可以嵌套使用 例: 循环&&选择: 选择结构:if(布尔值){ //功能代码1 }else{ //功能代码2 } 多选择 if(布尔值){ //功能代码1 }else if(布尔值){ //功能代码2 }else{ } 语义:当布尔值为true

python/数据类型和变量

拈花ヽ惹草 提交于 2019-12-19 14:10:32
数据类型和变量 数据类型   计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,   计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,   需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种: 整数   Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。   计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。 浮点数   浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,   比如,1.23x10 9 和12.3x10 8 是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。   但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10 9 就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。   整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。 字符串   字符串是以单引号'或双引号

python核心编程 笔记

风流意气都作罢 提交于 2019-12-18 10:08:43
1. 所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔值, 空对象,值为0,的任何数字或者Null对象None的布尔值都是False. 2. a = 10 ; b = 20   a is b 这个表达式等价于下面的表达式:   id (a) == id(b) 3. 整数对象和字符串对象是不可变对象,所以python会很高效的缓存他们。这会造成我们认为应该 创建新对象是,他却没有创建的假象。 比如下面的例子:   a = 1   id (a) # 8402824   b = 1   id (b) # 8402824 4. cmp内建函数.   比较是在对象之间进行的,不管是标准类型对象还是用户自定义对象。如果是用户自定义对象,cmp 会调用该类的特殊方法__cmp__() 。 5. types.IntType (应该从第五章开始看了. )    来源: https://www.cnblogs.com/zzys/p/8167916.html

Python——布尔值与布尔操作符

风格不统一 提交于 2019-12-10 17:43:40
1.“布尔”数据类型只有两种值:True 和False。 2.比较操作符== 等于,!= 不等于,< 小于,> 大于,<= 小于等于,>= 大于等于,比较两个值,求值为一个布尔值。 >>> 42 == 42 True 3.布尔操作符 (1)二元布尔操作符 and 和or 操作符总是接受两个布尔值(或表达式),所以它们被认为是“二元”操作符。如果两个布尔值都为True,and 操作符就将表达式求值为True,否则求值为False。另一方面,只要有一个布尔值为真,or 操作符就将表达式求值为True。如果都是False,所求值为False。 >>> True and True True >>> True and False False (2)not 操作符 ot 操作符只作用于一个布尔值(或表达式),not 操作符求值为相反的布尔值。 >>> not True False (3)混合布尔和比较操作符 >>> (4 < 5) and (5 < 6) True >>> (4 < 5) and (9 < 6) False 来源: CSDN 作者: nee~ 链接: https://blog.csdn.net/guo_qingxia/article/details/103478921

python核心编程 笔记

折月煮酒 提交于 2019-12-06 16:36:51
1. 所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔值, 空对象,值为0,的任何数字或者Null对象None的布尔值都是False. 2. a = 10 ; b = 20   a is b 这个表达式等价于下面的表达式:   id (a) == id(b) 3. 整数对象和字符串对象是不可变对象,所以python会很高效的缓存他们。这会造成我们认为应该 创建新对象是,他却没有创建的假象。 比如下面的例子:   a = 1   id (a) # 8402824   b = 1   id (b) # 8402824 4. cmp内建函数.   比较是在对象之间进行的,不管是标准类型对象还是用户自定义对象。如果是用户自定义对象,cmp 会调用该类的特殊方法__cmp__() 。 5. types.IntType (应该从第五章开始看了. )    来源: https://www.cnblogs.com/zzys/p/8167916.html

freemarker(二) 常用内置函数

我怕爱的太早我们不能终老 提交于 2019-12-06 15:21:38
freemarker 常用内置函数 1。在模板里边 变量引用使用: ${a}, 如果给<#macro aa tmp=a > 这不需要 $, 可以给模板注入一些自定义的函数 ,这个比较常用. ======================= 接下来 将网上一些 内置函数 记录下来 一、Sequence的内置函数 1.sequence?first 返回sequence的第一个值。 2.sequence?last 返回sequence的最后一个值。 3.sequence?reverse 将sequence的现有顺序反转,即倒序排序 4.sequence?size 返回sequence的大小 5.sequence?sort 将sequence中的对象转化为字符串后顺序排序 6.sequence?sort_by(value) 按sequence中对象的属性value进行排序 注意:Sequence不能为null 二、Hash的内置函数 1.hash?keys 返回hash里的所有key,返回结果为sequence 2.hash?values 返回hash里的所有value,返回结果为sequence 三、操作字符串函数 1.substring(start,end)从一个字符串中截取子串 start:截取子串开始的索引,start必须大于等于0,小于等于end end: 截取子串的长度