您现在的位置是:首页 > 正文

JS中String()与new String()的区别

2024-01-30 20:06:36阅读 0

今天看到这样的面试题,如下:

var yiifaa = 'yiifaa',
    str1 = new String(yiifaa),
    str2 = String(yiifaa)
  • 1
  • 2
  • 3

声明与赋值了3个变量,然后考题如下:

//  请确认以下的判断是否准确
str1 === yiifaa
//
str2 === yiifaa
//
typeof str1 === typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

根据JS的语法,要满足===的条件如下: 
1. 如果是引用类型,则两个变量必须指向同一个对象(同一个地址); 
2. 如果是基本类型,则两个变量除了类型必须相同外,值还必须相等。

再把话题切换到String对象上来,String的声明方式有三种(请参见第一段代码),但产生的类型却不尽相同,结果如下:

//  类型为string,为基本类型
typeof yiifaa
//  类型为object,为引用类型
typeof str1
// 类型为string,为基本类型 typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

那现在答案很清楚了,如下:

//  false, 因为str1为引用类型
str1 === yiifaa
//  true, 因为都是基本类型,并且值相等
str2 === yiifaa
// false, 虽然都是字符串,但分别为object与string
typeof str1 === typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结

很神奇的String对象,一方面可以作为基本类型,另一方面还可以作为引用类型,更神奇的是,为String.prototype添加方法,基本类型还可以引用到,怎么做到的?

转载于:https://www.cnblogs.com/qfly/p/7675567.html

网站文章

  • react中本地开发跨域如何处理

    【代码】react中本地开发跨域如何处理。

    2024-01-30 20:06:22
  • 李超线段树

    李超线段树

    什么是李超线段树 先以一个问题引入: 在平面上有两种操作(强制在线): 插入一条表达式为 L : y = k*x+b 的直线,给出 k ,b 。 给出 t,求当前所有直线中与直线 x = t 交点的纵...

    2024-01-30 20:05:53
  • 数论题 (牛客网)

    [编程|1000分] 数码 时间限制:1秒 空间限制:32768K 题目描述 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。 输入描述: 一行,两个整数 l 和 r (1 ≤ l ≤ r ≤ 10^9)。 输出描述: 输出9行。

    2024-01-30 20:05:46
  • 正则表达式的与或非

    正则表达式的与或非

    转自: http://www.cnblogs.com/bvbook/archive/2010/11/03/1867775.html正则表达式的与或非我们都知道,写正则表达式有点像搭积木,复杂的功能总可以拆分开来,由不同的元素(也就是子表达式)对应,再用合适的关系将它们组合起来,就可以完成。在这一节,我们讲解常见的与或非关系的表达。与“与”是最简单的关

    2024-01-30 20:05:38
  • 网络安全——缓冲区溢出攻击

    网络安全——缓冲区溢出攻击

    什么是缓冲区?它是指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型。所谓溢出,其实就是所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存区域。两者结合进来,所谓缓冲区溢出,就是由于填充数据越界而导致原有流程的改变,黑客借此精心构造填充数据,让程序转而执行特殊的代码,最终获取控制权。

    2024-01-30 20:05:33
  • 2022年腾讯首发Java岗分布式面试真题,助力金三银四我是认真的!

    2022年腾讯首发Java岗分布式面试真题,助力金三银四我是认真的!

    分布式分为分布式缓存(Redis)、分布式锁(Redis 或 Zookeeper)、分布式服务(Dubbo 或 SpringCloud)、分布式服务协调(Zookeeper)、分布式消息队列(Kafk...

    2024-01-30 20:05:04
  • 山西大学计算机专业国内排名,山西这所大学曾是国内排名前五,如今排名下滑,有点走下坡路了...

    山西大学计算机专业国内排名,山西这所大学曾是国内排名前五,如今排名下滑,有点走下坡路了...

    文/山西有不少大家熟知的大学,一共85所院校,其中34所本科院校,51所专科院校。我国的高校数量众多,达到了2900多所,快突破了3000所,不仅数量多,各大高校也都经过的多年的办学历程,才达到现在办...

    2024-01-30 20:04:57
  • html必要的结构标准,HTML_关于现代前端必要知识

    html必要的结构标准,HTML_关于现代前端必要知识

    由VS Code空.html文件打出html:5或!按下tab建后默认生成的.html基本框架代码说起我是title第一行: 很庆幸,如今我们只需要这么一个自闭合标签即可告诉浏览器,请使用html5的...

    2024-01-30 20:04:51
  • centos7 安装git_centos7搭建H1ve环境

    centos7 安装git_centos7搭建H1ve环境

    H1ve是一款开源的ctf平台,具备解题和攻防对抗模式,并且还有可视化战况界面.是个很不错的平台,我们今天来搭建一下,顺便解决一下搭建的各种问题.系统版本:centos7需要环境:dockerpython2 pipdocker-composemariadb开始搭建,先重新安装一个centos7的虚拟机.(mini最小化安装,安装过程不表).1.先安装docker依赖环境yum insta...

    2024-01-30 20:04:23
  • CSS中修改ul标签的样式

    在我们使用li标签的时候,ul样式经常会错乱 ul标签样式设置如下: ul { list-style: none; padding: 0px; margin: 0px; }

    2024-01-30 20:04:17