编程笔记 html5cssjs 069 JavaScript Undefined数据类型

编程笔记 html5&css&js 069 JavaScript Undefined数据类型

  • 一、undefined数据类型
  • 二、类型运算
  • 小结

在JavaScript中,undefined 是一种基本数据类型,它表示一个变量已经声明但未定义(即没有赋值)或者一个对象属性不存在。

一、undefined数据类型

在JavaScript中,undefined 是一种基本数据类型,它表示一个变量已经声明但未定义(即没有赋值)或者一个对象属性不存在。

  1. 声明未赋值的变量

    // 声明但未赋值的变量默认为 undefined
    var myVar;
    console.log(myVar); // 输出: undefined
    
  2. 函数参数未传入值

    function greet(name) {console.log(`Hello, ${name}!`);
    }greet(); // 函数调用时缺少参数
    // 输出:Hello, undefined!
    
  3. 访问不存在的对象属性

    var obj = {};
    console.log(obj.nonExistingProp); // 输出: undefined
    
  4. 函数没有返回任何值

    function noReturn() {// 没有return语句
    }var result = noReturn();
    console.log(result); // 输出: undefined
    
  5. 比较操作

    • 使用相等运算符 == 时,undefinednull 相等。
      console.log(undefined == null); // 输出: true
      
    • 然而,使用严格相等运算符 === 时,它们是不相等的。
      console.log(undefined === null); // 输出: false
      
  6. 转换为布尔值

    • undefined 被转换为布尔值时,它会变成 false
      if (undefined) {console.log("This won't be printed"); // 不会执行此行代码
      } else {console.log("undefined is falsy"); // 输出: undefined is falsy
      }
      

总的来说,在JavaScript编程中,遇到 undefined 通常意味着程序需要进一步处理或检查该变量是否已正确初始化或对象属性是否存在。在开发过程中避免变量意外地处于 undefined 状态是非常重要的,可以减少潜在的运行时错误。

二、类型运算

在JavaScript中,undefined 数据类型主要用于标识变量未初始化或对象属性不存在的情况。对于 undefined 类型的值,常见的运算包括:

  1. 比较运算

    • 相等性检查:可以使用相等运算符()和严格相等运算符(=)来检查一个值是否为 undefined
      var x;
      console.log(x == undefined); // true,x未定义或未赋值
      console.log(x === undefined); // true,严格的类型和值检查// null与undefined在非严格相等比较时也是相等的
      console.log(null == undefined); // true
      console.log(null === undefined); // false,因为它们是不同的数据类型
      
  2. 逻辑运算

    • undefined 参与逻辑运算时,它会被转换为布尔值 false
      if (undefined) {// 这个块不会执行
      } else {console.log("undefined is falsy"); // 输出: "undefined is falsy"
      }
      
  3. 条件表达式

    • 在条件表达式或三元运算符中,undefined 作为条件会评估为假。
      var value = undefined;
      var result = value ? 'defined' : 'undefined';
      console.log(result); // 输出: "undefined"
      
  4. typeof 操作符

    • typeof 是一个特殊的运算符,用于确定变量的数据类型。
      var notDefined;
      console.log(typeof notDefined); // 输出: "undefined"
      
  5. 不推荐的做法

    • 尽管可以直接对 undefined 进行算术、位运算或其他非预期的操作,但这些操作通常没有意义或者会导致 NaN(Not-a-Number)的结果。
      console.log(undefined + 10); // 输出: NaN
      console.log(~undefined); // 输出: -1
      

在实际开发中,避免对 undefined 值进行不必要的运算,而应该优先确保变量已正确初始化,并通过条件判断来处理可能的 undefined 状态。

小结

undefined事实上只是一个特定的值,官方非说成是类型我们只能也这么说。

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

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

相关文章

MIT6.5830 实验3

前置回顾 在实验2中,完成了增删查改、排序、分组、聚合、连接等基本操作,在已提供 sql 解析器的基础上,能够运行进本的 sql 语句。都是逻辑层的实现,没有涉及物理存储方面的内容。 实验目标 实现最简单的基于锁的transaction&am…

MicroPython ESP32开发:通过寄存器直接访问外围设备

可以通过直接读写寄存器来控制 ESP32 的外设。这就需要阅读数据手册,了解要使用哪些寄存器以及要写入哪些值。下面的示例展示了如何打开和更改 MCPWM0 外设的预分频器。 from micropython import const from machine import mem32# Define the register addresses …

面向对象OOP

一、面向对象的定义 基于"类"和"对象"的"组件化"编程思想 二、面向对象的核心思想 封装 继承 多态 (1)封装 : 隐藏代码实现细节,提高简洁性 (2)继承 :代码的复用,通过定义父类,子类在父类基础上…

【STM32+HAL库+CubeMX】UART轮询收发、中断收发、DMA收发方法及空闲中断详解

(转载)原文链接:https://blog.csdn.net/qq_39344192/article/details/131470735 1. 什么是UART? UART是一种异步串行通信接口,常用于通过串口与外部设备进行通信。它通过发送和接收数据帧来实现数据传输,使…

Android开发中,Vue 3处理回退按键事件

vue3有一些变化,按照网上有些文章的方法,发现行不通,通过一段时间的打印、尝试后,发现以下方法可行。 第一步)首先定义一个处理回退事件的js函数,一定是vue.methods中的函数,否则找不到this&am…

postman 文档、导出json脚本 导出响应数据 response ,showdoc导入postman json脚本 导出为文档word或markdown

保存、补全尽可能多的数据、描述 保存响应数据 Response:(如果导出接口数据,会同步导出响应数据) 请求接口后,点击下方 Save as Example 可以保存响应数据到本地(会在左侧接口下新增一个e.g. 文件用来保…

使用_NT_SYMBOL_PATH在启动VS前设置PDB路径

一、背景 由于公司相关项目的开发管理方式,导致公司会存在多个分支的版本正在开发/测试中。 在这样的背景下,我的日常工作中有时会出现存在某个分支的项目软件的某个功能出现了问题需要我去排查解决,而我当前并不在该分支上开发。于是只能安装…

C++泛编程(3)

类模板基础 1.类模板的基本概念2.类模板的分文件编写3.类模板的嵌套 (未完待续...) 在往节内容中,我们详细介绍了函数模板,这节开始我们就来聊一聊类模板。C中,类的细节远比函数多,所以这个专题也会更复杂。…

Llama2大模型开源,大模型的Android时代来了?

就昨天凌晨,微软和Meta宣布Llama2大模型开源且进一步放开商用,一下朋友圈刷屏。要知道,开源界最强大的模型就是过去Meta开源的Llama,而现在Llama2更强大,又开放商用,更有微软大模型霸主企业撑腰(微软既投资大模型界的IOS——ChatGPT,又联合发布大模型的Android——Llam…

【2月比赛合集】28场可报名的数据挖掘大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 Kaggle(2场比赛)阿里天池(…

数据库学习笔记2024/2/4

随笔 1. 为什么学? 认识数据,熟悉数据,掌握数据。 进企业必备技能。 2. 怎么学? 1、MySQL数据库就是存储和管理数据的一个大型软件,这个软件有一个专门的语言叫SQL,主要学的是SQL语言,但想要达到企业用人标准,就还得学会熟练使用MySQL这个软件。 2、学习分三阶段: 一. …

salesforce的公式字段如何显示多个空格

公式字段会自动剔除文本字段中的额外空格,以防止显示过多的空格。如果需要显示多个空格,可以使用非换行空格符 (这在某些上下文中可以被视为一个单独的空格)。例如: " "

倒计时64天

B-小红的因子数_牛客周赛 Round 31 (nowcoder.com) 超时了&#xff08;108.33/150&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e5 5; const int inf 0x3f3f3f3f; #define int long long void solve() {int x;cin>>x;if(x1){cout&…

微信小程序课设(基于云开发)

微信小程序通过Laf云平台接入ChatGPT实现聊天&#xff0c;回答方式采用流式回答。 以下是图片展示其页面 回答次数通过卡密兑换 以下是对话页面的代码 <!--pages/content/content.wxml--><view class"container"><view class"div" hidde…

软件测试学习笔记-使用jmeter进行接口测试

使用jmeter之前首先需要安装jdk&#xff0c;配置其环境变量&#xff0c;然后再安装jmeter 软件测试学习笔记-使用jmeter进行接口测试 1. 断言1. 响应断言2. JSON断言 2. 参数化1. 用户定义的变量2. CSV参数化 3. 接口关联4. 连接数据库 1. 断言 对某个接口其中一些信息进行判断…

DP第一天:力扣● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

● 理论基础 DP大约五种问题&#xff1a; 动规基础&#xff08;斐波那契数列、爬楼梯&#xff09;&#xff1b;背包问题&#xff1b;股票问题&#xff1b;打家劫舍&#xff1b;子序列问题。 要搞清楚&#xff1a; DP数组及其下标的含义&#xff1b;DP数组如何初始化&#x…

DiskGenius v4.30专业版下载

DiskGenius是一款专业级的数据恢复软件&#xff0c;算法精湛、功能强大&#xff0c;用户群体广泛&#xff1b;支持各种情况下的文件恢复和分区恢复&#xff0c;恢复效果好&#xff1b;文件预览、扇区编辑、加密分区恢复、Ext4分区恢复、RAID恢复等高级功能应有尽有&#xff0c;…

C++设计模式-简单工厂模式,工厂方法模式,抽象工厂模式

目录 简单工厂模式&#xff0c;工厂方法模式&#xff0c;抽象工厂模式 附&#xff1a; 简单工厂模式&#xff0c;工厂方法模式&#xff0c;抽象工厂模式 简单工厂模式&#xff1a;根据字符串参数返回对象。 工厂方法模式&#xff1a;创建一维对象&#xff0c;即一个工厂创建…

Vue3+TS+Vite+Pinia最全学习总结

VUE3介绍 vue2和vue3之间的区别 因为需要遍历data对象上所有属性&#xff0c;所以如果data对象属性结构嵌套很深&#xff0c;就会存在性能问题。因为需要遍历属性&#xff0c;所有需要提前知道对象上有哪些属性&#xff0c;才能将其转化为getter和setter,所以vue2中无法将data新…

嵌入式Linux:main函数的使用方法

和单片机开发一样&#xff0c;在Linux中&#xff0c;C语言程序的执行通常从main函数开始。main函数是程序的入口点&#xff0c;当程序启动时&#xff0c;操作系统会调用main函数来执行程序的主要逻辑。 不同于单片机开发&#xff0c;通常设置main函数没有参数&#xff0c;Linu…