前端学习<四>JavaScript基础——06-基本数据类型:String 和 Boolean

今天这篇文章,我们详细讲一下基本数据类型。

String 字符串

语法

字符串型可以是引号中的任意文本,其语法为:双引号 "" 或者单引号 ''

来看个示例。下面的这些,都是字符串:

 var a = 'abcde';var b = '千古壹号';var c = '123123';var d = '哈哈哈哈哈';var e = ''; //空字符串​var f = haha; // 没使用引号,到这里会直接报错。因为会被认为是js代码,但是之前并没有定义 haha。​console.log(typeof a);console.log(typeof b);console.log(typeof c);console.log(typeof d);console.log(typeof e);

控制台输出如下:

 stringstringstringstringstring

引号的注意事项

1、单引号和双引号不能混用。比如下面这样写是不可以的:

 var str = 'hello";  // 报错:Uncaught SyntaxError: Invalid or unexpected token

2、同类引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。

3、单引号里可以嵌套双引号;双引号里可以嵌套单引号。

转义字符

在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。

  • \" 表示 " 双引号

  • \' 表示 ' 单引号

  • \\ 表示\

  • \r 表示回车

  • \n 表示换行。n 的意思是 newline。

  • \t 表示缩进。t 的意思是 tab。

  • \b 表示空格。b 的意思是 blank。

举例:

 var str1 = '我说:"今天\t天气真不错!"';var str2 = '\\\\\\';​console.log(str1);console.log(str2);

上方代码的打印结果:

     我说:"今天  天气真不错!"\\\

获取字符串的长度

字符串是由若干个字符组成的,这些字符的数量就是字符串的长度。我们可以通过字符串的 length 属性可以获取整个字符串的长度。

代码举例:

 var str1 = '千古壹号';var str2 = '千古壹号,永不止步!';​var str3 = 'qianguyihao';var str4 = 'qianguyihao, keep moving!';​console.log(str1.length); // 4console.log(str2.length); // 10console.log(str3.length); // 11console.log(str4.length); // 25

由此可见,字符串的 length 属性,在判断字符串的长度时,会认为:

  • 一个中文算一个字符,一个英文算一个字符

  • 一个标点符号(包括中文标点、英文标点)算一个字符

  • 一个空格算一个字符

字符串拼接

多个字符串之间可以使用加号 + 进行拼接。

拼接语法

 字符串 + 任意数据类型 = 拼接之后的新字符串;

拼接规则:拼接前,会把与字符串相加的这个数据类型转成字符串,然后再拼接成一个新的字符串。

代码举例:(字符串与六大数据类型相加)

 var str1 = '千古壹号' + '永不止步';var str2 = '千古壹号' + 666;var str3 = '千古壹号' + true;var str4 = '千古壹号' + null;var str5 = '千古壹号' + undefined;​var obj = { name: '千古壹号', age: 28 };var str6 = '千古壹号' + obj;​console.log(str1);console.log(str2);console.log(str3);console.log(str4);console.log(str5);console.log(str6);

打印结果:

千古壹号永不止步千古壹号666千古壹号true千古壹号null千古壹号undefined千古壹号[object Object]

字符串的不可变性

字符串里面的值不可被改变。虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。

代码举例:

var str = 'hello';str = 'qianguyihao';

比如上面的代码,当重新给变量 str 赋值时,常量hello不会被修改,依然保存在内存中;str 会改为指向qianguyihao

模板字符串(模板字面量)

ES6 中引入了模板字符串,让我们省去了字符串拼接的烦恼。下面一起来看看它的特性。

在模板字符串中插入变量

以前,让字符串进行拼接的时候,是这样做的:(传统写法的字符串拼接)

var name = 'smyhvae';
var age = '26';
console.log('name:' + name + ',age:' + age); //传统写法

这种写法,比较繁琐,而且容易出错。

现在,有了 ES6 语法,字符串拼接可以这样写:

var name = 'qianguyihao';
var age = '26';console.log('我是' + name + ',age:' + age); //传统写法
console.log(`我是${name},age:${age}`); //ES6 写法。注意语法格式

注意,上方代码中,倒数第二行用的符号是单引号,最后一行用的符号是反引号(在 tab 键的上方)。

参考链接:

  • ES6 的 rest 参数和扩展运算符

在模板字符串中插入表达式

以前,在字符串中插入表达式的写法必须是这样的:

const a = 5;
const b = 10;
console.log('this is ' + (a + b) + ' and\nnot ' + (2 * a + b) + '.');

现在,通过模板字符串,我们可以使用一种更优雅的方式来表示:

const a = 5;
const b = 10;// 下面这行代码,故意做了换行。
console.log(`this is ${a + b} and
not ${2 * a + b}.`);

打印结果:

this is 15 and
not 20.

模板字符串中可以换行

因为模板字符串支持换行,所以可以让代码写得非常美观。

代码举例:

const result = {name: 'qianguyihao',age: 28,sex: '男',
};// 模板字符串支持换行
const html = `<div><span>${result.name}</span><span>${result.age}</span><span>${result.sex}</span>
</div>`;console.log(html); // 打印结果也会换行

打印结果:

模板字符串中可以调用函数

模板字符串中可以调用函数。字符串中调用函数的位置,将会显示函数执行后的返回值。

举例:

function getName() {return 'qianguyihao';
}console.log(`www.${getName()}.com`); // 打印结果:www.qianguyihao.com

模板字符串支持嵌套使用

const nameList = ['千古壹号', '许嵩', '解忧少帅'];function myTemplate() {// join('') 的意思是,把数组里的内容合并成一个字符串return `<ul>${nameList.map((item) => `<li>${item}</li>`).join('')}</ul>`;
}
document.body.innerHTML = myTemplate();

效果如下:

布尔值:Boolean

布尔型有两个值:true 和 false。主要用来做逻辑判断: true 表示真,false 表示假。

布尔值直接使用就可以了,千万不要加引号。

代码:

var a = true;
console.log(typeof a);

控制台输出结果:

boolean

布尔型和数字型相加时, true 按 1 来算 ,false 按 0 来算。

写在最后:希望大家可以点个关注点个赞,这对up真的很重要!谢谢!

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云从入门到精通技术详解100篇-基于点云与图像纹理的 道路识别

目录 前言 国内外研究现状 基于视觉图像数据的道路识别方法

Photoshop 2024 中文---专业图像处理软件的又一次飞跃

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等&#xff0c;使用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实现各种视觉效果…

如何防止SQL注入?能够采取什么措施?

防止SQL注入主要依赖于以下几种方法&#xff1a; 1. 使用参数化查询&#xff08;预编译语句&#xff09; 参数化查询是防止SQL注入的最有效手段之一。通过使用预编译语句&#xff08;例如&#xff0c;在Java中使用PreparedStatement&#xff09;&#xff0c;可以确保用户输入…

云备份day03

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C云备份项目 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容介绍了第三方库httplib的一些内容&#xff0c;以及实现…

Java 进程状态

一&#xff0c;进程介绍 定义&#xff1a;进程是计算机中运行中的程序的实例。它包含了程序的代码、数据以及程序运行时所需的各种资源&#xff0c;如内存空间、CPU时间等。 特征&#xff1a; 动态性&#xff1a;进程是动态创建、执行和销毁的。并发性&#xff1a;在多道程序环…

VSCode好用插件

由于现在还是使用vue2&#xff0c;所以本文只记录vue2开发中好用的插件。 美化类插件不介绍了&#xff0c;那些貌似对生产力起不到什么大的帮助&#xff0c;纯粹的“唯心主义”罢了&#xff0c;但是如果你有兴趣的话可以查看上一篇博客&#xff1a;VSCode美化 1. vuter 简介&…

【opencv】示例-barcode.cpp 条形码检测和解码

#include <iostream> // 引入标准输入输出流库 #include "opencv2/objdetect.hpp" // 引入OpenCV物体检测库 #include "opencv2/imgproc.hpp" // 引入OpenCV图像处理库 #include "opencv2/highgui.hpp" // 引入OpenCV高层GUI库using names…

Linux系统中打包NTFS文件系统文件夹为ISO格式压缩包

首先要安装mkisofs这个命令行工具 然后命令行&#xff1a; mkisofs -D -J -joliet-long -input-charset utf-8 -o targetdir.iso targetdir/

Mybatis plus 实现IService方式,使用SpringbootTest引入service 测试

说明&#xff1a;mybatis plus 不光可以继承BaseMapper 实现数据的增删改查&#xff0c;还可以通过继承IService方式实现&#xff0c;并可提供批量的增删改等方法 如&#xff1a;saveBatch、removeBatchByIds等&#xff0c;非常方便。 1、 引包 <dependency><groupId…

169.乐理基础-调式板块总结、调式判断

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果不认识调号去看112.五线谱的调号&#xff08;一&#xff09;、113.五线谱的调号&#xff08;二&#xff09;、114.快…

如何使用 Midjourney?2024年最新更新

一&#xff1a;基础篇 1&#xff1a;注册 首先&#xff0c;你需要注册一个 Discord 账号&#xff0c;然后加入 Midjourney 的 Discord 服务器。或者去 Midjourney 的官网点击右下角的 Join the Beta&#xff1a; ​ 2&#xff1a;在 Discord 公共服务器里使用 注册并进入到…

MySQL面试题系列-8

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

JVM基础

初识JAM JVM就是JAVA虚拟机&#xff0c;本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行JAVA字节码文件. 下面是java代码执行过程 JVM的功能 1.解释和运行 对字节码文件中的指令实时的解释成机器码 2.内存管理 自动为对象&#xff0c;方法等分配内存自动的垃圾回…

基于顺序表实现通讯管理系统!(有完整源码!)

​​​​​​​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01;​​​​​​​ 目录 1、实现思路 ​…

OCm (Radeon Open Compute) 和 CUDA (Compute Unified Device Architecture)

OCm&#xff08;Radeon Open Compute&#xff09;和CUDA&#xff08;Compute Unified Device Architecture&#xff09;是两种旨在利用图形处理单元&#xff08;GPU&#xff09;进行通用计算的技术和框架。 OCm&#xff08;Radeon Open Compute&#xff09;&#xff1a; OCm&…

CentOS 7 下离线安装RabbitMQ教程

CentOS 7 下安装RabbitMQ教程一、做准备&#xff08;VMWare 虚拟机上的 CentOS 7 镜像 上安装的&#xff09; &#xff08;1&#xff09;准备RabbitMQ的安装包&#xff08;rabbitmq-server-3.8.5-1.el7.noarch&#xff09;下载地址mq https://github.com/rabbitmq/rabbitmq-se…

os.listdir()bug总结

今天测试出一个神奇的bug&#xff0c;算是教训吧&#xff0c;找了两天不知道问题在哪&#xff0c;最后才发现问题出现在这 原始文件夹显示 os.listdir()结果乱序 import os base_path "./file/"files os.listdir(base_path)print(files)问题原因 解决办法(排序)

NB-IOT 介绍 1

1 名称介绍 NB-----Narrow Band IOT -----Internet of things NB-IOT---窄带物联网 2 物联网技术发展 以太网&#xff1a;网线 RS232一种串行通信标准&#xff0c;通常采用正负电压来表示逻辑值&#xff0c;如正电压表示逻辑1&#xff0c;负电压表示逻辑0。 RS485一种串行通…

(学习日记)2024.04.06:UCOSIII第三十四节:互斥量函数接口讲解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Java中的Deque

Deque 我们知道&#xff0c;Queue是队列&#xff0c;只能一头进&#xff0c;另一头出。 如果把条件放松一下&#xff0c;允许两头都进&#xff0c;两头都出&#xff0c;这种队列叫双端队列&#xff08;Double Ended Queue&#xff09;&#xff0c;学名Deque /dek/。 Java集合…