From ba7c72aafe8fc36442dcf1c60ddd28da4a7c0363 Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Mon, 26 Feb 2024 12:16:01 +0800 Subject: [PATCH] =?UTF-8?q?update:=20Undefined=20=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...量的数据类型:基本数据类型和引用数据类型.md | 2 +- .../06-基本数据类型:String 和 Boolean.md | 35 ++++++--- ...defined.md => 08-基本数据类型:Undefined 和 Null.md} | 72 +++++++++++++------ 3 files changed, 76 insertions(+), 33 deletions(-) rename 04-JavaScript基础/{08-基本数据类型:Null 和 Undefined.md => 08-基本数据类型:Undefined 和 Null.md} (66%) diff --git a/04-JavaScript基础/05-变量的数据类型:基本数据类型和引用数据类型.md b/04-JavaScript基础/05-变量的数据类型:基本数据类型和引用数据类型.md index 17d6cd8..542d47f 100644 --- a/04-JavaScript基础/05-变量的数据类型:基本数据类型和引用数据类型.md +++ b/04-JavaScript基础/05-变量的数据类型:基本数据类型和引用数据类型.md @@ -48,7 +48,7 @@ name = 123; // 强制将变量 name 修改为 数字类型 ### JS 中一共有八种数据类型 -- **基本数据类型(值类型)**:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义、BigInt 大型数值、Symbol。 +- **基本数据类型(值类型)**:String 字符串、Boolean 布尔值、Number 数值、Undefined 未定义、BigInt 大型数值、Symbol。 - **引用数据类型(引用类型)**:Object 对象。 diff --git a/04-JavaScript基础/06-基本数据类型:String 和 Boolean.md b/04-JavaScript基础/06-基本数据类型:String 和 Boolean.md index f791aa1..61eaa9e 100644 --- a/04-JavaScript基础/06-基本数据类型:String 和 Boolean.md +++ b/04-JavaScript基础/06-基本数据类型:String 和 Boolean.md @@ -4,13 +4,15 @@ title: 06-基本数据类型:String 和 Boolean -今天这篇文章,我们详细讲一下基本数据类型。 - ## String 字符串 + + ### 语法 -字符串型可以是引号中的任意文本,其语法为:双引号 `""` 或者单引号 `''`。 +如果在开发中需要使用文本,就可以用 String 字符串类来表示,比如姓名、商品简介等。 + +其语法为:双引号 `""` 或者单引号 `''`。引号中的内容都是文本。 来看个示例。下面的这些,都是字符串: @@ -54,7 +56,19 @@ var str = 'hello"; // 报错:Uncaught SyntaxError: Invalid or unexpected toke ### 转义字符 -在字符串中我们可以使用`\`作为转义字符,当表示一些特殊符号时可以使用`\`进行转义。 +假设现在有这样一个字符串——`千古'壹号"前端开发"`。 + +上面的字符串中,前端开发 这四个字是被双引号包围的, 千古 和 壹号 之间有一个单引号。难点就在于这个单引号。 + +如果你想在JS中定义上述字符串的话,直接在代码中这样写是不行的,会报错: + +```js +var str = '千古'壹号"前端开发"'; // 会报错 +``` + +那要怎么办呢?这个时候,转移字符就派上用场了。 + +在字符串中我们可以使用`\`作为转义字符。如果你想表示一些特殊符号,可以使用`\`进行转义。 - `\"` 表示 `"` 双引号 @@ -75,16 +89,19 @@ var str = 'hello"; // 报错:Uncaught SyntaxError: Invalid or unexpected toke ```javascript var str1 = '我说:"今天\t天气真不错!"'; var str2 = '\\\\\\'; +var str3 = '千古\'壹号"前端开发"'; console.log(str1); console.log(str2); +console.log(str3); ``` 上方代码的打印结果: ``` - 我说:"今天 天气真不错!" - \\\ +我说:"今天 天气真不错!" +\\\ +千古'壹号"前端开发" ``` ### 获取字符串的长度 @@ -297,11 +314,11 @@ document.body.innerHTML = myTemplate(); ## 布尔值:Boolean -布尔型有两个值:true 和 false。主要用来做逻辑判断: true 表示真,false 表示假。 +布尔型有两个值:true 和 false。主要用来做逻辑判断: true 表示真,false 表示假。布尔值直接使用就可以了,千万不要加引号。 -布尔值直接使用就可以了,千万不要加引号。 +布尔(英语:Boolean)是计算机科学中的逻辑数据类型,以发明布尔代数的英国数学家**乔治·布尔**为名。 -代码: +代码举例: ```javascript var a = true; diff --git a/04-JavaScript基础/08-基本数据类型:Null 和 Undefined.md b/04-JavaScript基础/08-基本数据类型:Undefined 和 Null.md similarity index 66% rename from 04-JavaScript基础/08-基本数据类型:Null 和 Undefined.md rename to 04-JavaScript基础/08-基本数据类型:Undefined 和 Null.md index 60769c2..71db0b9 100644 --- a/04-JavaScript基础/08-基本数据类型:Null 和 Undefined.md +++ b/04-JavaScript基础/08-基本数据类型:Undefined 和 Null.md @@ -4,44 +4,49 @@ title: 08-基本数据类型:Null 和 Undefined -很多其他的语言中,只有 null;但 JS 语言中,既有 null,又有 undefined。很多人会弄混,由此觉得 JS 语言很麻烦。其实不然,学习完这篇文章后,你会发现 null 和 undefined 的区别很容易理解。 +有些其他的语言中,只有 null;但 JS 语言中,既有 undefined,又有 null。很多人会弄混,由此觉得 JS 语言很麻烦。其实不然,学习完本文后,你会发现 undefined 和 null 的区别很容易理解。 -## Null:空对象 +## Undefined:未定义类型 -null 专门用来定义一个**空对象**。例如:`let a = null`,又例如 `Object.create(null)`. +Undefined类型的值只有一个,就是 undefind。比如 `var a = undefined`。 -如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,这个时候,可以在初始化时将其设置为 null。你可以把 null 理解为:**null 虽然是一个单独的数据类型,但null 相当于是一个 object,只不过地址为空(空指针)而已**。 - -比如: - -```js -let myObj = null; -cosole.log(typeof myObj); // 打印结果:object -``` - -补充: - -- Null 类型的值只有一个,就是 null。比如 `let a = null`。 - -- 从语义上讲,null表示一个空对象,所以使用 typeof 检查一个 null 值时,会返回 object。 - -## undefined:未定义类型 +使用 typeof 检查一个 undefined 值时,会返回 undefined。 ### case1:变量已声明,未赋值时 **声明**了一个变量,但没有**赋值**,此时它的值就是 `undefined`。举例: ```js -let name; +var name; console.log(name); // 打印结果:undefined console.log(typeof name); // 打印结果:undefined ``` -补充: +下面这两行代码是等价的: + +```js +// 写法1 +var name; +// 写法2。这种写法冗余了,不推荐。 +var name = undefined; +``` + +注意事项: + +1、不要显式地将变量 赋值为 undefined,不太规范。也就是说,上面的写法2 是冗余的,增加了不必要的代码量,这种写法不太规范。 + +2、变量在定义时,尽量做一下初始化(赋值操作),而不是只声明一个变量。上面的写法1就是属于只声明一个变量,也不太推荐这种写法。 + +如果变量刚开始没有值,我们可以将其赋值为空字符串、false、0、null 等值,这有利于代码书写的语义化。推荐的代码举例: + +```js +var a = ''; // 字符串类型的变量,如果刚开始没有值,则可以初始化为空字符串 +var b = false; // 布尔类型的变量,如果刚开始没有值,则可以考虑默认值为 false +var c = 0; // 字符串类型的变量,如果刚开始没有值,可以考虑默认值为 0 +var d = null; // 空对象,可以初始化为 null +``` -- Undefined 类型的值只有一个,就是 undefind。比如 `let a = undefined`。 -- 使用 typeof 检查一个 undefined 值时,会返回 undefined。 ### case2:变量未声明(未定义)时 @@ -98,6 +103,27 @@ function foo(name = 'qianguyihao') {} foo(); ``` +## Null:空对象 + +null 专门用来定义一个**空对象**。例如:`let a = null`,又例如 `Object.create(null)`. + +如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,这个时候,可以在初始化时将其设置为 null。你可以把 null 理解为:**null 虽然是一个单独的数据类型,但null 相当于是一个 object,只不过地址为空(空指针)而已**。 + +比如: + +```js +let myObj = null; +cosole.log(typeof myObj); // 打印结果:object +``` + +补充: + +- Null 类型的值只有一个,就是 null。比如 `let a = null`。 + +- 从语义上讲,null表示一个空对象,所以使用 typeof 检查一个 null 值时,会返回 object。 + + + ## 其他区别 undefined 实际上是由 null 衍生出来的,所以`null == undefined`的结果为 true。