首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS中的隐式类型转换规则

前言JavaScript作为一门弱类型语言,并不像C、Java那样有明确的类型定义如int、boolean、string、float、double等数据类型,而js同时又是一门脚本语言,逐行编译运行的,...为了防止运行出错,就存在了变量类型的隐式转换本人使用js也有一段时间了,但是对这个转换规则还是有点不理解全面,所以从网上学习回来,总结了这个隐式转换规则,从此以后不再纠结于这个东西,请往下看转换规则运算符的转换规则...,会先将复杂类型转换为原始类型(Primitive),再进行运算,转换的过程如下: 先调用复杂类型对象上的valueOf()方法,如果返回值的不是原始类型,则调用toString()方法undefinde...两边对比的转换规则!...后面的值会直接转换成boolean对于原始类型之间的比较(==),如果两边类型一致,则直接进行比较,否则会先都转换为number类型,再进行比较对于复杂类型与原始类型之间的运算,复杂类型与复杂类型之间的比较

10610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS数据类型转换规则显示类型转换

    , Json) 显示类型转换 Number的原始类型转换规则 数值转换后还是数值 字符串如果可以解析为数值则为数值, 空字符串为0, 无法解析的字符串为NaN 布尔转数值, true转为1, false...Number的对象类型转换规则 传入实例M, 先调用M的valueOf(), 如果返回值V为基本数据类型, 则直接使用Number(V), 求最终返回值 如果T不属于基本数据类型, 则调用M的toString...String的原始类型转换规则 数值(Number)转为相应的字符串 字符串(String) 转换后还是字符串 布尔值(Boolean)转换规则: true => 'true', false=> 'false...String 的对象类型转换规则 与Number的对象转换规则类似, 区别是: 先调用对象的toString(), 然后再调用valueOf() 其实正常情况下, 对象调用自身的toString()...后, 对象就可以转换为string基本类型, valueOf() 没有机会被调用, 但万事有个例, 如果我们重新定义了对象的toString()方法,使其返回非基本类型的值, 那样就有机会调用对象的valueOf

    2.7K50

    PHP中的强制类型转换

    而PHP据说也会在PHP8中加入JIT实现编译功能,并且在7.4中就会引入变量声明时的类型指定。下面我们先看看目前PHP中的参数类型及返回值类型的使用。...function add(int $a, float $b) : int{ return (int) $a + $b; } 上述代码中,方法参数中定义了参数的类型,包括一个int类型的a和一个...基本类型如int、float等的参数类型声明都是7以后才支持的,详情参见文档: https://www.php.net/manual/zh/functions.arguments.php 我们通过(int...具体的区别就类似于数据库中的binary和char类型及blob和text类型 在日常的开发中基本用不到,了解即可 // (binary) var_dump((binary) 1); var_dump...本文内容会经常出现在面试题中,而且在实际开发中的很多逻辑判断出现的BUG也常常是由于PHP的自动类型转换所导致的,所以这篇文章好好收藏多拿出来看看绝对会让你有意想不到的收获哦!!

    4.8K20

    php中的数据类型

    php是弱类型语言 , 但是并不表示没有数据类型 PHP 支持 10 种原始数据类型。...四种标量类型: bool(布尔型) int(整型) float(浮点型,也称作 double) string(字符串) 四种复合类型: array(数组) object(对象) callable(可调用...) iterable(可迭代) 两种特殊类型: resource(资源) NULL(无类型) 为了确保代码的易读性,两种伪类型: mixed(混合类型) void(无类型) 其他语言是程序员定义在编译期进行处理的..., 而PHP是根据该变量使用的上下文在运行时决定的 如果想查看某个表达式的值和类型,用 var_dump() 函数。...如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype() 函数。 要检验某个类型,不要用 gettype(),而用 is_类型系列判断函数

    1.3K10

    Java变量类型转换规则与注意事项

    对于以上这些变量类型之间的相互转换在我们编程中经常要用到,下面重点学习一下它们之间转换规则与注意事项。 ?...网络配图 1、整型、实型、字符型变量中的相互转换: 在Java中整型、实型、字符型被视为同一类数据,这些类型由低级到高级分别为(byte,short,char)、int、long、float、double...3、简单类型变量和包装类之间的相互转换: 简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。...)可以得到String类中某一位置上的字符,toCharArray()更可以将整个String类转换成一个 char的数组。...5、将字符型直接做为数值转换为其它数据类型: 将字符型变量转换为数值型变量实 际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系

    77660

    PHP弱类型在CTF中的应用

    PHP作为世界上最好的语言(然而人生苦短,我用python),在CTF web题中大放异彩,深受出题人的喜爱。...P神在对web题出题套路总结的第三条指出,出题人喜欢花式玩弄php的特性,包括弱类型、反序列化、\0截断、iconv截断。那么今天我们就php弱类型这一特性,总结一下相关出题的套路。...在Bugku WEB Write Up(二)《矛盾》这题中我们已经初步领略了PHP弱类型的魅力 也明白了为什么“test”会等于0 这里再举几个例子,加深一下理解 “1test”与1相比较时,会先将“...WEB Write Up(四)》之《前女友》这道题中,对strcmp函数的绕过进行了详细讲解,同时对php中md5()函数(sha1()函数类似)无法处理数组类型的数据从而可以绕过进行了讲解。...这篇文章对php弱类型在CTF比赛中的总结并不全面,如果大家在做题的过程遇到了新的套路和绕过姿势,欢迎一起交流哦~

    4.1K51

    图解 == 操作符规则和不同类型间转换规则

    图解 == 操作符规则和不同类型间转换规则 很多人包括我在内很抵触这种问题?,因为很长一段时间我一直弄不明白 == 和 === 到底是怎么个规则。...比如 2 == '3' 就会变成 2 == 3 最后会比较 2 === 3 这就是最基本的规则 == 操作符具体的转化规则 然后我们再来看看具体的转换规则⬇️: 整体流程概览 如果类型相同,调用 ===...查看我们比较的项中是否有 boolean ✅ 如果有,那么将 `boolean` 转为 `number` 并回到最初重新比较 ♻️ ⬇️ 如果不是继续下一条规则 4..../ecma-262/6.0/#sec-abstract-equality-comparison 类型转换 上述在比较的过程中,涉及到类型的转换,如字符串转整数、布尔值转整数、以及获取对象原始值等等。...了解一下这些不同类型之间是如何转换的: 获取对象原始值 接着我们再来研究一下对象怎么转换为原始值的: 我们需要知道转换类型的这个方法在 JS 源代码中是 ToPrimitive 这个方法,该方法有一个可选参数

    70120

    如何处理PHP代码中的枚举类型enum?

    枚举是一组元素(也叫做成员)的集合,每一个枚举都定义了一种新类型。这个类型,和它的值一样,可以包含任意属于该枚举的元素。 在上面的例子中,枚举借助于常量,每一个常量的值都是一个成员。...注意,这样做的话,我们只能在常量包含的类型中取值。因此,我们在写这些值的时候不会有类型提示,不知道详细的枚举类型。 来看一个简短的例子, 但我们假定例子中有更多的代码 的类型。 直到PHP 7,我们可以安装 SPL类 PECL扩展并且使用SplEnum 。 PHP本身并不支持枚举类型,所以我们在这里探讨的所有内容都是仿真的。 我们用这种方法得到了什么? 我们可以输入提示我们的参数,并让PHP引擎在发生错误时提醒我们。...如果这些规则比较简单很容易发现代码中存在的问题. 让我们看些实例. <?

    1.5K30

    【说站】php变量中的两种复合类型

    php变量中的两种复合类型 1、数组(array),数组可以存储多个数据,可以是任何类型。 事实上,数组相当于一个有序的图表,将values映射到keys类型中。 php /* array( key1 => value1, key2 => value2, ... ) key可以是整型或字符型,value可以是任何类型 */ $arr = array("foo" =...// 通过数组下标访问单个数据 2、对象(object),对象是一种比数组更先进的复合数据类型。..."; } } $p = new Person; // 使用new语句实例化类Person的对象放在变量$p中 $p->name = "Tom"; // 通过对象$p访问对象中的成员属性 $p->say(...);   // 通过对象$P访问对象中的成员方法 以上就是php变量中的两种复合类型,希望对大家有所帮助。

    67120

    php的引用类型底层解析

    ref中的str类型的字符串 (gdb) p z $5 = (zval *) 0x7ffff5a14090 (gdb) p *z $6 = {value = {lval = 140737314300072...ref也是由gc和zval组成,而且对应的zval中的u1的type为6,是字符串类型 (gdb) p *$6.value.ref.val.value.str $9 = {gc = {refcount...ref是由gc和zval组成,而且对应的zval中的u1的type为6,是字符串类型 (gdb) p *$11.value.ref.val.value.str $13 = {gc = {refcount...ref是由gc和zval组成,而且对应的zval中的u1的type为6,是字符串类型 (gdb) p *$15.value.ref.val.value.str $17 = {gc = {refcount...,仅仅是把b中的u1的type改为了0,为null类型,其余的地址等信息都未改变,所以对应的$a是不会有任何改变的 所以后面在打印$a的过程中,一切都是正常的,以下为$a的打印过程 (gdb) p *

    3.9K10
    领券