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

嗨,为什么这是返回typeError,而这不是?

嗨!这是因为JavaScript是一种动态类型语言,变量的类型是在运行时确定的。当你在代码中执行某个操作时,JavaScript引擎会根据操作的类型和参与操作的变量的当前值来推断变量的类型。如果某个操作对于变量的当前类型是不支持的,JavaScript引擎就会抛出一个类型错误(TypeError)。

下面我会给出两个例子,一个会返回TypeError,另一个不会。

例子1:

代码语言:txt
复制
var num = 10;
var str = "Hello";

var result = num.toUpperCase(); // 尝试对一个数值类型的变量使用toUpperCase()方法,该方法用于将字符串转换为大写形式
console.log(result);

在这个例子中,变量num是一个数值类型,而toUpperCase()方法只能用于字符串类型。因此,当我们尝试对变量num调用toUpperCase()方法时,JavaScript引擎会抛出一个类型错误,提示我们该操作不适用于数值类型。

例子2:

代码语言:txt
复制
var str = "Hello";

var result = str.toUpperCase(); // 对一个字符串类型的变量使用toUpperCase()方法,该方法用于将字符串转换为大写形式
console.log(result);

在这个例子中,变量str是一个字符串类型,而toUpperCase()方法可以用于字符串类型。因此,当我们对变量str调用toUpperCase()方法时,不会出现类型错误,而是会返回将字符串转换为大写形式后的结果。

总结:返回TypeError取决于你在代码中执行的操作和操作涉及的变量的类型。如果某个操作对于变量的当前类型不支持,就会出现类型错误。因此,尽量确保操作的兼容性,避免出现类型错误。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器CVM:https://cloud.tencent.com/product/cvm
  • 云数据库MySQL:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎TKE:https://cloud.tencent.com/product/tke
  • 人工智能机器翻译API:https://cloud.tencent.com/product/tmt
  • 物联网通信平台IoT Hub:https://cloud.tencent.com/product/iothub
  • 移动推送服务推送SDK:https://cloud.tencent.com/product/umeng_push
  • 对象存储COS:https://cloud.tencent.com/product/cos
  • 区块链服务BaaS:https://cloud.tencent.com/product/baas
  • 云游戏解决方案GSE:https://cloud.tencent.com/product/gse
  • 腾讯会议:https://cloud.tencent.com/product/tc_meeting
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 useState 返回的是 array 而不是 object?

前言 这是我今天收到的一条推送文章,发现自己好像也没有去思考过这个问题,于是点进来了 明白了原因之后,想用自己的话梳理一遍,分享给其他还不了解的同学 正文 先来看看 useState 的日常用法 const...[count, setCount] = useState(0) 这里可以看到 useState 返回的是一个数组,那么为什么返回数组而不是返回对象呢?...为什么返回数组而不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...array 而不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,而返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState 返回的是 array...而不是 object?

2.2K20

互联网大厂的服务器不是在山洞里就是湖底、海底。这是为什么

上述就是一些大厂服务器存放的地方,不知道大家有没有发现这些大厂对于服务器的存放位置走的都不是寻常路,放的位置也是奇奇怪怪的,有放在山洞里的,有放在海底的,有放在湖底的,为什么他们要把服务器建造这些地方呢...2、可以节能,减少碳排放 看完第一点可能有的人会想,为什么就一定得放到这些地方,用空调对着吹不就可以了吗?...服务器体量庞大,想要达到非常好的降温散热效果,就必须装大量的空调,而这些都需要大量的成本,其次在给服务器降温的时候,空调也在消耗非常大量的电,从而消耗大量的煤炭等资源,(当下主流还是火力发电)进而造成大量的碳排放破坏环境...阿里的这一举措原理也不没有很高深莫测,就是利用湖水形成一个循环散热系统,当然了具体操作起来也没有想象中的那么简单,不是给服务器做个防水措施就能行得通的,为此阿里自研了绝缘冷却液,将机器泡入其中,然后再沉入湖底

4.2K30
  • java – 为什么InputStream#read()返回一个int而不是一个字节?

    但是为何方法InputStream#read()需要返回int类型值呢?...首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char值,比如char...中的-1值,那么就占用了此字符,如果字节数据恰好对应-1值,那么就无法被正确读出,且会被错误认为i字节数据读好了,这就是返回int类型值的原因,当然,字节数据被转为int表示,需要高24位布零。...其次,既然只是如上的需求,那么为什么返回short值呢? 实际上在Java内存模型中,对于short以及int类型值,都是占据32位的内存空间的。...换言之,我们没有在这个应用中返回int/short类型的数据是没有区别的,所以我们不妨就使用代表其实际内存模型的int类型值。

    1.2K20

    从 Python 的魔法方法说开去

    于是我们来看源码,看看popen()到底返回了个什么对象(省略了无关代码): def popen(cmd, mode="r", buffering=-1): ......_stream) popen()返回了一个_wrap_close对象,而后者仅仅是一个 Iterable,而不是 Iterator(没有定义__next__())。..._stream对象,而这个对象有__next__()方法。这就解释了为什么r.__next__()能调用成功。 所以,Python 对于魔法方法的调用是基于这个类有没有定义此方法吗?...= &_PyObject_NextNotImplemented) 判断一个obj是不是迭代器,是基于Py_TYPE(obj)是否有__next__()方法,而不是obj本身。...我用 Python 的时间不可谓不短,也自认对 Python 的语言特性比较了解了,但 Python 却总能时不时让我意外一下,这是什么情况?

    15920

    JS 原生方法原理探究(三):如何实现 new 操作符?

    这是JS 原生方法原理探究系列的第三篇文章。本文会介绍如何模拟实现 new 操作符。关于 new 的具体用法,MDN 已经描述得很清楚了,这里我们只做简单的介绍,具体的重点在于如何模拟实现。...prototype 将实例对象绑定为构造函数中的 this,此前传递进来的参数作为参数,并执行一遍构造函数 如果构造函数返回了对象,则将其作为返回值,否则将实例对象作为返回值 代码实现 ES3 版本的实现如下...= 'function'){ throw new TypeError(Fn + 'is not a constructor') } myNew.target = Fn...returnValue : instance } 注意几个要点: 当函数是通过 new 调用的时候,new.target 会指向函数自身,这个“指向”的操作在代码里就是通过 myNew.target = Fn 体现的 为什么不直接使用...根据规范,我们在实现 new 的时候,需要检测构造函数的原型是不是对象,如果不是对象,比如说是 null,那么实例的 __proto__ 会指向 Object 的原型,而这里如果使用了 Object.create

    1K20

    【JS】230-迭代器与 for of的使用和原理

    : iterator is not iterable,表明我们生成的 iterator 对象并不是 iterable(可遍历的)。...这也就是为什么直接 for of 遍历 Set 和 Map 数据结构,会有不同的数据结构返回: const values = new Set([1, 2, 3]); for (let value of...而这段编译的代码稍微复杂的地方有两段,一段是 for 循环这里: for ( var _iterator = colors[Symbol.iterator](), _step; !...…… 但是你不返回值或者返回一个基本类型的值的话,结果又会报错…… TypeError: Iterator result undefined is not an object这是因为 return 方法必须返回一个对象...,而这又是 Generator 规范决定的…… 总之如果是在浏览器中使用的话,return 函数的返回值其实并不生效 T^T

    89241

    ES6 系列之迭代器与 for of

    : iterator is not iterable,表明我们生成的 iterator 对象并不是 iterable(可遍历的)。...这也就是为什么直接 for of 遍历 Set 和 Map 数据结构,会有不同的数据结构返回: const values = new Set([1, 2, 3]); for (let value of...而这段编译的代码稍微复杂的地方有两段,一段是 for 循环这里: for ( var _iterator = colors[Symbol.iterator](), _step; !...…… 但是你不返回值或者返回一个基本类型的值的话,结果又会报错…… TypeError: Iterator result undefined is not an object 这是因为 return 方法必须返回一个对象...,而这又是 Generator 规范决定的…… 总之如果是在浏览器中使用的话,return 函数的返回值其实并不生效 T^T 作者:冴羽 https://github.com/mqyqingfeng/Blog

    49610

    Python 高级教程之函数式编程

    它使用表达式而不是语句。计算表达式以产生值,而执行语句以分配变量。 函数式编程的概念 任何函数式编程语言都应该遵循这些概念。 纯函数:这些函数有两个主要属性。...print(greeting) greet(shout) greet(whisper) 输出: ,我是由作为参数传递的函数创建的。 ,我是由作为参数传递的函数创建的。...一些内置的高阶函数是: Map(): map() 函数在将给定函数应用于给定迭代(列表、元组等)的每个项目后返回结果列表 语法: map(fun, iter) 参数: fun:这是一个函数,map...[x for x in L if x % 2 == 0] print(is_even) 输出: 343 [2, 4, 6] 不变性 不变性是一种可用于调试的函数式编程范例,因为它会在变量被更改而不是值被更改的地方引发错误...call last): File "/home/ee8bf8d8f560b97c7ec0ef080a077879.py", line 10, in immutable[1] = 'K' TypeError

    77131

    Python自定义函数

    Python函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码块 我们之前使用的比如print(),就是Python为我们提供好的内建函数,但是你也可以自己创建函数,而这种函数呢,我们将之称为自定义函数...4.return用来返回一个对象,这个对象可以是函数处理的结果也可以是状态等等。 ?...#多参的函数 def sum_all(a,b,c): return a+b+c m_sum = sum_all(10,20,30) print(m_sum) 执行结果: 60 函数的复用 为什么要创建...、调用函数而不是直接写出具体指令呢?...有现成的为什么不用呢,有一个现成函数可以大大降低程序员的工作量。实现功能的第一反应应该是:是否有现成的函数/方法/模块 可用?而不是重复的造轮子。

    81030

    初识字节流+实现缓冲字节流OutputStream的主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回的是Int型而不是

    filename.isFile()==false的话,那么会抛出FileNotFoundException 读 read():int read(byte[] array):int 与Reader类一样,如果到了文件末尾,返回...-1 这里有个特别好用的方法,可以用来知道文件的大小 available():int; 返回文件的字节数 这时就可以用这个方法来定义array的大小,那么就可以一次性读完了 关流 flush...){return -1;} } len--; return (array[index++]&255);//防止出现读到11111111此时错误的返回了...---- 错误的返回了-1 如果扫描到了11111111那么此时将byte->int是-1,如果这样的话,程序就会终止不会进行 为什么read()返回的是Int型而不是byte型呢??

    1.3K80

    python之基础篇(四)

    python有许多的内置类型,我们为什么要使用内置类型呢?python编程时是尽量去使用自定义类型还是尽可能多的使用内置类型呢?  ...实例的调用接口,实例所属类型所支持的操作   类必须要实例化成对象,而这些实例对象其内部的数据不同,所以它们才称为不同的实例。  ...对于属性来说,通过点号运算符来访问时返回一个数据,若想显示则要使用print语句;   对于方法来说,调用时则执行对应方法内部的代码。   使用内置函数dir()来获取对象支持的属性和方法。  ...对象的身份与类型:   python内置函数id()可返回一个对象的身份,即该对象在内存中的位置     is运算符用于比较两个对象的身份;     type()用于返回一个对象的类型;     对象类型本身也是一个对象...比如一个数字和一个字母相运算,这是个抛出异常的。因为此两者不是同一种类型,在python中不同类型之间是无法进行运算的。

    64520

    Python编程常见问题与解答

    为什么在IDLE中执行会提示语法错误呢? 答:应该在命令提示符环境执行,不是在Python开发环境中执行。...4.问:为什么使用pip命令安装扩展库是提示“不是内部或外部命令,也不是可运行的程序或批处理文件”?...为什么使用下标访问其中的元素时提示“TypeError: 'map' object is not subscriptable”呢?...12.问:我创建了一个集合,想在里面加入一个列表作为元素,结果提示“TypeError: unhashable type: 'list'”,这是什么意思呢?...遇到这种情况时,仔细检查代码的逻辑和问题的要求是否一致,是否把>写成>=了,或者忽略了range()函数返回的是左闭右开区间了,是不是把运算符**写成*了,是不是代码缩进有错误。

    3.5K10

    ​数据猿专访 | 球高级副总裁魏航:看孙继海如何用大数据改变体育行业

    这位39岁仍征战球场的老将几个月前不仅推出了自己的自媒体视频节目《我是海叔》,而且还创办了自己的公司——球。这家公司是做什么的?孙继海为什么要创办这家公司?...曾诚受伤后发布的视频受到大量关注就是一个例子,而这类例子在秒不胜枚举。...而这些视频的传播比一些比赛更适合形成病毒传播效应。” 与其他短视频应用相比,魏航认为秒的优势在于运营和体育定义。“秒APP是一个体育细分产品。...“其实这是运动员给我们的启发,”魏航说,“她在做这些视频的时候并没有想到植入广告,但不久前有几家快消品居然通过这个视频找到秒,希望能做代言,也许我们可以与运动员进行分成,我们甚至可以把所得更多的广告收入让给视频的发布者...但最终冷静下来,秒的产品团队认为眼下还没有必要进行这类运营,他们认为还不到时候:“广告植入并不是我们必须要做的事,只是一个可能的方向。”

    1.4K80

    论编程界的日经问题:到底如何区分静态类型和动态类型、强类型和弱类型?

    我相信一部分人看到这个分类的时候一定已经开始有一些疑问了,别急,让我们慢慢道来…… Python 为什么是强类型 很多人觉得 Python 不是一个强类型的语言,因为其在变量声明时不需要指定类型,也很少见到...但其实,Python 是一门强类型的动态类型语言,虽然在变量声明时我们不需要显式指定类型,但是“类型”这一概念是实际存在的,举个例子,以下 Python 代码会获得一个 TypeError: >>> 1...unsupported operand type(s) for +: 'int' and 'str' 这是因为我们将 int 类型和 str 类型相加导致的,Python 不知道应该如何将这两种类型相加...C, C++ 为什么是弱类型 有些人看到 C 和 C++ 是弱类型的时候可能会大吃一惊,怎么可能,C 和 C++ 明明拥有严格的变量类型标注才对!...expected `&str`, found `usize` Python 的 type hint Python 在其 3.5 版本引入了一个名为 typing 的功能,可以为 Python 函数提供函数参数和返回值类型声明

    33540

    读Zepto源码之IOS3模块

    = 'function') throw new TypeError() if(len == 0 && arguments.length == 1) throw new TypeError()...这里有一点值得注意的,判断是否为 undefined 时,用了 void 0 的返回值,因为 void 操作符返回的结果都为 undefined ,这是为了避免 undefined 被重新赋值,出现误判的情况...为什么不直接用 for 来处理数组呢?因为 reduce 不会处理稀疏数组,所以转换要转换成对象来处理。...用 k 来保存当前索引,accumulator 为返回值。 接下来,检测回调函数 fun 是否为 function ,如果不是,抛出类型错误。...到这里问题就比较简单了,就是 while 循环,用 accumulator 保存回调函数返回的值,在下一次循环时,再将 accumulator 作为参数传递给回调函数,直至数组耗尽,然后将结果返回

    69100
    领券