2020-10-16 09:44发布
Undefined
Null
Boolean
String
Number
Symbol
Object
undefined是window对象的一个属性,其类型是Undefined。
下面解释javascript中属性的本质,因为undefined是一个属性,了解undefine的本质要用到属性的本质。
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性(property)。
先来说第一类属性,数据属性。它比较接近于其它语言的属性概念。数据属性具有四个特征。
value:就是属性的值。
writable:决定属性能否被赋值。
enumerable:决定for in能否枚举该属性。
configurable:决定该属性能否被删除或者改变特征值。
补充:第二类属性是访问器(getter/setter)属性,它也有四个特征。 (本文用不到,但可以和第一类属性放在一起记忆)getter:函数或undefined,在取属性值时被调用。setter:函数或undefined,在设置属性值时被调用。enumerable:决定for in能否枚举该属性。configurable:决定该属性能否被删除或者改变特征值。
补充:第二类属性是访问器(getter/setter)属性,它也有四个特征。 (本文用不到,但可以和第一类属性放在一起记忆)
getter:函数或undefined,在取属性值时被调用。
setter:函数或undefined,在设置属性值时被调用。
我们通常用于定义属性的代码会产生数据属性,其中的writable、enumerable、configurable都默认为true。我们可以使用内置函数 Object.getOwnPropertyDescripter来查看,如以下代码所示:
const print = console.logconst o = {a: 1} o.b = 2// a和b均为数据属性const aa = Object.getOwnPropertyDescriptor(o, 'a')// {value: 1, writable: true, enumerable: true, configurable: true}const bb = Object.getOwnPropertyDescriptor(o, 'b')// {value: 2, writable: true, enumerable: true, configurable: true}print('aa', aa) print('bb', bb)
对window对象的undefined施加此函数:
由此看出undefined是window的第一类属性--数据属性,而且该属性不能能被赋值(writable=false),不能被for in枚举(enumerable=false),不能删除或改变特征值(configurable=false)。这也解释为什么给undefined重新赋值后其值却不改变:因为writable=false
以及解释为什么不能重新用Object.defineProperty函数定义undefined:因为configurable=false
注:如果我们要想改变属性的特征,或者定义访问器属性,我们可以使用 Object.defineProperty
一个问题,为什么有的编程规范要求用void 0代替undefined?现在我们就分别来看一下。
Undefined 类型表示未定义,它的类型只有一个值,就是 undefined。任何变量在赋值前是 Undefined 类型、值为 undefined,一般我们可以用全局变量undefined(就是名为undefined的这个变量)来表达这个值,或者 void 运算来把任一一个表达式变成 undefined 值。
但是呢,因为JavaScript的代码undefined是一个变量,而并非是一个关键字,这是JavaScript语言公认的设计失误之一,所以,为了避免无意中被篡改,建议使用 void 0 来获取undefined值。
Undefined跟 null 有一定的表意差别,null表示的是:“定义了但是为空”。所以,在实际编程时,我们一般不会把变量赋值为 undefined,这样可以保证所有值为 undefined 的变量,都是从未赋值的自然状态 。
Null 类型也只有一个值,就是 null,它的语义表示空值,与 undefined 不同,null 是 JavaScript 关键字,所以在任何代码中,你都可以放心用 null 关键字来获取 null 值。
undefined是window对象的一个属性其类型是Undefined,属性不是简单的名值对,它还具有一组特征值(attribute)。通过Object.getOwnPropertyDescriptor函数可以得到这组特征值。通过Object.defineProperty函数可以添加一个自定义特征值的属性,在已有属性的特征值configurable为true的前提下也可以通过该函数修改已有属性的特征值。
补充:undefined在全局环境没法被赋值,在局部环境是可以被赋值的!
undefined有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。
undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
举例:
使用的变量未定义,或不存在的意思
在javascript中表示“无值”。null常常被看做对象类型的一个特殊值,即代表“无对象”的值。null是个独一无二的值,有别与其他所有的值。如果一个变量的值为null,那么就说明它的值不是有效的对象、数组、数字、字符串和布尔值。undefined还有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。注意这个特殊的undefined值不同于null。
null在javascript中表示“无值”。null常常被看做对象类型的一个特殊值,即代表“无对象”的值。null是个独一无二的值,有别与其他所有的值。如果一个变量的值为null,那么就说明它的值不是有效的对象、数组、数字、字符串和布尔值。undefined还有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。注意这个特殊的undefined值不同于null。
Undefined:访问一个未初始化变量(声明完没有赋值的变量)返回的值,表示空变量
向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];var arry2=[];arry.map(((item, index)=> {arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))}))cons...
我觉得getTopWindow() 应该是他自己写的函数 mask 应该是getTopWindow()函数中 return 出的一个什么玩意show() jQuery的显示
如图所示
1、原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2、 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链...
使用VS code对JS进行Debug,需要安装一个插件,这个插件是根据你所使用的浏览器来的,不同浏览器对应插件不同,以下是插件对应情况,下载完相应的插件以后还要下载一个live server在浏览器下查看你界面运行效果,记得在到设置里修改下live server的端口号,然...
没有基础,是可以学Java的,在网上也能找到很多免费的视频、学习资料等资源,只不过想要光靠自己摸索学透Java并不容易,最好是找一个比较靠谱的有实训的培训机构。不过,我给你点建议:1.脑子里要有编程思维,2.学习态度要有,3.了解了基本概念后,从图形界面...
假设文本框的id=text1js:document.getElementById(text1).value = 测试;//即可
这两个事件都是在js原生开发时经常会用到的,比如需要对页面dom进行动态处理,这时就需要用到DOMContentLoaded和[removed]事件,大家都知道,就是在dom构建完毕后,才可以对dom元素进行操作,否则会获取不到相应的dom元素,但是DOMContentLoaded和[removed]还...
基本概念CookieCookie 是小甜饼的意思。顾名思义,cookie 确实非常小,它的大小限制为4KB左右。它的主要用途有保存登录信息,比如你登录某个网站市场可以看到记住密码,这通常就是通过在 Cookie 中存入一段辨别用户身份的数据来实现的。localStoragelocalStor...
在vscode 头疼的问题是 用浏览器查看网页!会是以文件夹的方式打开的! 我遇到这个问题 我还重新配置了Apache ! 但是现在可以解决:使用vscode ==================== 打开cmd : 在cmd 控制台中输入 : 1.运行cnpm install live-server...
在进行对象之间的合并的时候,就会使用到extend方法进行合并语法结构:$.extend(true,{},对象1,对象2...)但是这里需要考虑一个问题,如果对象间有相同的属性名,就会涉及到哪一个对象和哪一个对象的值覆盖合并的问题,如果对象中的属性值还是一个对象的话,那...
先说下要实现什么功能,比如:限制图片大小不能超过30K,宽高为121x75上面需求提了,然后我直接把代码给你放出来,可以照着下面代码敲一遍试试就知道怎么限制图片宽高了 $(#picFile4).on(change,function(){ var imgFile = this.files[0]; va...
用python爬取近30天百度指数代码均转载,如下:#1.登录url = ‘http://index.baidu.com/’driver = webdriver.Chrome(executable_path=‘C:/Program Files(x86)/Google/Chrome/Application/chromedriver.exe’)driver.get(url)cookieList = [......
基本类型基本类型分为以下六种:string(字符串)boolean(布尔值)number(数字)symbol(符号)null(空值)undefined(未定义)注意:string 、number 、boolean 和 null undefined 这五种类型统称为原始类型(Primitive),表示不能再细分下去的基本类...
实体类中添加时间转换注解(注意时区问题)12345/** * 开始时间 */ @JsonFormat(pattern = yyyy-MM-dd HH:mm:ss, timezone=GMT+8) private Date startTime;
实例中包含加、减、乘、除四种运算,由于先乘和除的优先级别高,所以乘和除将首先被运算,接下来是加和减运算。乘和除优先级相同,所以左边的乘法将被先执行,然后是除法,接下来按从左到右的顺序进行加减运算...
最多设置5个标签!
一、列出7种数据类型(面试可能问)
Undefined
Null
Boolean
String
Number
Symbol
Object
二、undefined本质
undefined是window对象的一个属性,其类型是Undefined。
下面解释javascript中属性的本质,因为undefined是一个属性,了解undefine的本质要用到属性的本质。
三、属性本质
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性(property)。
先来说第一类属性,数据属性。它比较接近于其它语言的属性概念。数据属性具有四个特征。
value:就是属性的值。
writable:决定属性能否被赋值。
enumerable:决定for in能否枚举该属性。
configurable:决定该属性能否被删除或者改变特征值。
我们通常用于定义属性的代码会产生数据属性,其中的writable、enumerable、configurable都默认为true。我们可以使用内置函数 Object.getOwnPropertyDescripter来查看,如以下代码所示:
对window对象的undefined施加此函数:
由此看出undefined是window的第一类属性--数据属性,而且该属性不能能被赋值(writable=false),不能被for in枚举(enumerable=false),不能删除或改变特征值(configurable=false)。这也解释为什么给undefined重新赋值后其值却不改变:因为writable=false
以及解释为什么不能重新用Object.defineProperty函数定义undefined:因为configurable=false
注:如果我们要想改变属性的特征,或者定义访问器属性,我们可以使用 Object.defineProperty
四、Undefined与Null
一个问题,为什么有的编程规范要求用void 0代替undefined?现在我们就分别来看一下。
Undefined 类型表示未定义,它的类型只有一个值,就是 undefined。任何变量在赋值前是 Undefined 类型、值为 undefined,一般我们可以用全局变量undefined(就是名为undefined的这个变量)来表达这个值,或者 void 运算来把任一一个表达式变成 undefined 值。
但是呢,因为JavaScript的代码undefined是一个变量,而并非是一个关键字,这是JavaScript语言公认的设计失误之一,所以,为了避免无意中被篡改,建议使用 void 0 来获取undefined值。
Undefined跟 null 有一定的表意差别,null表示的是:“定义了但是为空”。所以,在实际编程时,我们一般不会把变量赋值为 undefined,这样可以保证所有值为 undefined 的变量,都是从未赋值的自然状态 。
Null 类型也只有一个值,就是 null,它的语义表示空值,与 undefined 不同,null 是 JavaScript 关键字,所以在任何代码中,你都可以放心用 null 关键字来获取 null 值。
五、总结
undefined是window对象的一个属性其类型是Undefined,属性不是简单的名值对,它还具有一组特征值(attribute)。通过Object.getOwnPropertyDescriptor函数可以得到这组特征值。通过Object.defineProperty函数可以添加一个自定义特征值的属性,在已有属性的特征值configurable为true的前提下也可以通过该函数修改已有属性的特征值。
补充:undefined在全局环境没法被赋值,在局部环境是可以被赋值的!
undefined
有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。
undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
举例:
undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
使用的变量未定义,或不存在的意思
在javascript中表示“无值”。null常常被看做对象类型的一个特殊值,即代表“无对象”的值。null是个独一无二的值,有别与其他所有的值。如果一个变量的值为null,那么就说明它的值不是有效的对象、数组、数字、字符串和布尔值。undefined还有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。注意这个特殊的undefined值不同于null。
null
在javascript中表示“无值”。null常常被看做对象类型的一个特殊值,即代表“无对象”的值。null是个独一无二的值,有别与其他所有的值。如果一个变量的值为null,那么就说明它的值不是有效的对象、数组、数字、字符串和布尔值。
undefined
还有一种特殊值Javascript会偶尔一用,它就是值undefind。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。
注意这个特殊的undefined值不同于null。
Undefined:访问一个未初始化变量(声明完没有赋值的变量)返回的值,表示空变量
相关问题推荐
向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];var arry2=[];arry.map(((item, index)=> {arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))}))cons...
我觉得getTopWindow() 应该是他自己写的函数 mask 应该是getTopWindow()函数中 return 出的一个什么玩意show() jQuery的显示
如图所示
1、原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2、 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链...
使用VS code对JS进行Debug,需要安装一个插件,这个插件是根据你所使用的浏览器来的,不同浏览器对应插件不同,以下是插件对应情况,下载完相应的插件以后还要下载一个live server在浏览器下查看你界面运行效果,记得在到设置里修改下live server的端口号,然...
没有基础,是可以学Java的,在网上也能找到很多免费的视频、学习资料等资源,只不过想要光靠自己摸索学透Java并不容易,最好是找一个比较靠谱的有实训的培训机构。不过,我给你点建议:1.脑子里要有编程思维,2.学习态度要有,3.了解了基本概念后,从图形界面...
假设文本框的id=text1js:document.getElementById(text1).value = 测试;//即可
这两个事件都是在js原生开发时经常会用到的,比如需要对页面dom进行动态处理,这时就需要用到DOMContentLoaded和[removed]事件,大家都知道,就是在dom构建完毕后,才可以对dom元素进行操作,否则会获取不到相应的dom元素,但是DOMContentLoaded和[removed]还...
基本概念CookieCookie 是小甜饼的意思。顾名思义,cookie 确实非常小,它的大小限制为4KB左右。它的主要用途有保存登录信息,比如你登录某个网站市场可以看到记住密码,这通常就是通过在 Cookie 中存入一段辨别用户身份的数据来实现的。localStoragelocalStor...
在vscode 头疼的问题是 用浏览器查看网页!会是以文件夹的方式打开的! 我遇到这个问题 我还重新配置了Apache ! 但是现在可以解决:使用vscode ==================== 打开cmd : 在cmd 控制台中输入 : 1.运行cnpm install live-server...
在进行对象之间的合并的时候,就会使用到extend方法进行合并语法结构:$.extend(true,{},对象1,对象2...)但是这里需要考虑一个问题,如果对象间有相同的属性名,就会涉及到哪一个对象和哪一个对象的值覆盖合并的问题,如果对象中的属性值还是一个对象的话,那...
先说下要实现什么功能,比如:限制图片大小不能超过30K,宽高为121x75上面需求提了,然后我直接把代码给你放出来,可以照着下面代码敲一遍试试就知道怎么限制图片宽高了 $(#picFile4).on(change,function(){ var imgFile = this.files[0]; va...
用python爬取近30天百度指数代码均转载,如下:#1.登录url = ‘http://index.baidu.com/’driver = webdriver.Chrome(executable_path=‘C:/Program Files(x86)/Google/Chrome/Application/chromedriver.exe’)driver.get(url)cookieList = [......
基本类型基本类型分为以下六种:string(字符串)boolean(布尔值)number(数字)symbol(符号)null(空值)undefined(未定义)注意:string 、number 、boolean 和 null undefined 这五种类型统称为原始类型(Primitive),表示不能再细分下去的基本类...
实体类中添加时间转换注解(注意时区问题)12345/** * 开始时间 */ @JsonFormat(pattern = yyyy-MM-dd HH:mm:ss, timezone=GMT+8) private Date startTime;
实例中包含加、减、乘、除四种运算,由于先乘和除的优先级别高,所以乘和除将首先被运算,接下来是加和减运算。乘和除优先级相同,所以左边的乘法将被先执行,然后是除法,接下来按从左到右的顺序进行加减运算...