首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在声明时对象obj.two结果为undefined

在声明时,对象obj.two结果为undefined的原因是因为对象obj中没有属性名为"two"的属性。当我们声明一个对象时,如果没有给该对象添加属性,那么访问该属性时会返回undefined。

对象是一种复合数据类型,它由一组键值对组成,每个键值对表示对象的一个属性。在JavaScript中,我们可以使用点号(.)或方括号([])来访问对象的属性。

例如,如果我们声明了一个空对象obj:

代码语言:txt
复制
var obj = {};

此时,对象obj中没有任何属性。因此,当我们尝试访问obj.two时,由于该属性不存在,结果会返回undefined。

如果我们希望给对象obj添加属性"two",可以使用以下方式之一:

  1. 使用点号(.)操作符:
代码语言:txt
复制
obj.two = "some value";
  1. 使用方括号([])操作符:
代码语言:txt
复制
obj["two"] = "some value";

以上两种方式都可以给对象添加属性"two"并赋予相应的值。

总结起来,声明时对象obj.two结果为undefined是因为对象obj中没有名为"two"的属性。如果我们希望该属性存在并具有某个值,可以使用点号或方括号操作符给对象添加属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

死磕JS:var、let、const 该怎么选?

函数体 函数作用域, 任意一个 {} 内一个 块级作用域 var 声明的变量,函数作用域 中生效,所以只有函数中声明的变量属于局部变量,代码块中声明的依然全局变量。...var message = 'hello'; } test(); 是不是结果很令人费解,为什么打印的不是 'hi',而是 undefined ?...,预加载时候 message 的作用域范围也就被框定了,message 变量不再属于全局变量,而是属于函数作用域,只不过赋值操作是在运行期执行(这就是为什么 Javascript 语言在运行时候会改变变量的类型...,因为赋值操作是在运行期进行的),所以使用 message 变量时候,message 变量局部作用域里没有被赋值,只有栈区的标示名称,因此结果就是 undefined 了 let 申明的变量不会提升。...如果该变量对象,那么修改这个对象内部的属性是合法的。

1.9K10

JavaScript经典作用域问题(转载)

,一开始生命了全局变量a=10,所以第5行输出结果10。...第7行输出结果100,因为局部变量a第3行已经被赋值了100,所以直接输出局部变量a的值。...,10 解析:看了第1个例子,可能有同学会认为输出结果是10 10,但是结果却不是10 10,为什么呢?...(这里即赋值),所以第3行输出结果undefined,执行第4行a =10后,变量a的值就为10,所以第5行输出结果10。...,一般用var声明的局部变量,没用var声明的一般全局变量,test函数内,a=10明了一个全局变量,所以第3行的a应该输出全局变量的值,而在函数执行之前已经声明过一个全局变量并赋值100,所以这里第上输出

34720

帮你彻底弄懂 JavaScript 类型转换

但是 JavaScript 明时只有一种类型,只有到运行期间才会确定当前类型。...如果输入的值是个对象 如果 hint 是个字符串并且值'string'或者'number' 如果 hint 是'string',那么就将 methodNames 设置 toString、valueOf...[name](即拿到 valueOf 和 toString 两个方法) 如果 method 可以被调用,那么就让 result 等于 method 执行后的结果,如果 result 不是对象就返回 result...如果引用类型上有 @@toPrimitive 方法,就调用 @@toPrimitive 方法,执行后的返回值原始类型就直接返回,如果依然是对象,那么就抛出报错。...但是如果从 ECMA 的规范去理解这些转换规则的原理,那么就会很容易知道为什么最后会得到那些结果

72310

js中全局变量_var变量提升原理

第7行输出结果100,因为局部变量a第3行已经被赋值了100,所以直接输出局部变量a的值。...2、程序的运行结果undefined 10 此代码由Java架构师必看网-架构君整理 var a = 100; function test(){ console.log(a); var...a = 10; console.log(a); } test(); 解析:看了第1个例子,可能有同学会认为输出结果是10 10,但是结果却不是10 10,为什么呢?...(这里即赋值),所以第3行输出结果undefined,执行第4行a =10后,变量a的值就为10,所以第5行输出结果10。...a); } test(); console.log(a); 解析:我们知道函数内部,一般用var声明的局部变量,没用var声明的一般全局变量,test函数内,a=10明了一个全局变量,所以第3

5.6K30

7个常见的 JavaScript 测验及解答

不管变量最初由开发人员在哪里声明,变量都将移动到顶部,声明时将其值设置 undefined。...为什么:每次我们创建一个新的 Student 实例时,都会将 sayHello 属性设置是一个函数,并返回字符串 Hello。这是父类(Person)类的构造函数中发生的。...换句话说,它们两个都会指向内存中的同一个对象,因所以更改一个对象的属性将反映另一个对象的更改。 控制台中的结果应为 Mike。...箭头函数不绑定自己,而是从父作用域继承一个箭头函数,这就是为什么调用 printName 函数后输出了 undefined 的原因。 5.解构 请查看下面的销毁信息,并回答将要输出的内容。...上面的语法功能强大,使我们能够轻松地将任何对象分成两个更具体的对象,上面的示例控制台的输出: 1// {name: "John", surname: "Doe"} 2// {email: "john

97020

从map函数引发的讨论

那么,为什么我们还倾向于使用lodash的map函数?反对的至为关键理由是: lodash的map函数将可能的异常吃掉了! 这里提及的异常,指进行map的数组可能是undefined。...让我们先回归本源,看看JS的undefined到底是何妖物? JS中,定义了两种颇为相似的原始类型:Null和Undefined。其中,Undefined类型只有一个值,即undefined。...当声明的变量还未被初始化时,变量的默认值undefined。Null类型的值null,用来表示尚未存在的对象。...JS的数组从本质上讲就是一个对象,即Array对象,其作用是存储一系列的值。当我们声明了一个数组变量,却没有进行初始化时,就可能出现undefined的数组对象。...就好像不合时宜的一咳嗽,打断了音乐家的钢琴演奏。

1.4K90

Javascript中你必须理解的执行上下文和调用栈

结果变成 variableObject放入 executionContextObj中。...但是并没有人详细解释为什么会发生这种情况,有了刚才关于解释器如何创建活动对象(AO)的认知,我们将很容易看出原因。...foo 被声明了两次,为什么 foo 显示的是 function而不是 undefined或者 string?...因此 foo 会被先创建函数 function foo()的引用,当执行到 var foo时发现变量对象中已将存在了,所以此时什么也不做,而是继续扫描。 为什么 bar 是 undefined?...bar 实际上是一个变量只不过它的值是函数,而变量创建阶段的值 undefined。 总结 我们再来梳理下重要的知识点: 首先在程序执行时会创建一个全局的执行上下文,有且只有一个。

45110

Javascript中你必须理解的执行上下文和调用栈

结果变成 variableObject 放入 executionContextObj 中。...但是并没有人详细解释为什么会发生这种情况,有了刚才关于解释器如何创建活动对象(AO)的认知,我们将很容易看出原因。...foo 被声明了两次,为什么 foo 显示的是 function 而不是 undefined 或者 string?...因此 foo 会被先创建函数 function foo() 的引用,当执行到 var foo时发现变量对象中已将存在了,所以此时什么也不做,而是继续扫描。 为什么 bar 是 undefined?...bar 实际上是一个变量只不过它的值是函数,而变量创建阶段的值 undefined。 总结 我们再来梳理下重要的知识点: 首先在程序执行时会创建一个全局的执行上下文,有且只有一个。

55130

JavaScript中的 this的理解

关于this JavaScript有别于其他的编程语言 , 它的this总是指向一个对象 , 而具体指向那个对象是在运行时基于函数的执行环境动态绑定的 , 而不是函数明时的环境。...ES5的strict模式下 , 这种情况下的 this 已经被规定为不会指向全局对象 , 而是undefined: (3)....object类型的对象 , 那么此次运算结果最终会返回这个对象 , 而不是我们之前期待的 this ; 如果构造器不显示地返回任何数据 , 或都是返回一个非对象类型的数据 , 就不会造成上述问题 :...undefined。...再来看一个例子 ,document.getElementById 这个方法 , 你们肯定有实现过类似下面的方法封装 : 也许有人思考过为什么不能用下面这种更简单的方式 : 为了探究是否可行 , 我们让下面这段代码浏览器中运行一次

46610

带你真正了解 JavaScript 中的 this

例如:无论函数在哪里、如何被调用,它的词法作用域都只由被声明时所处的位置决定。 动态作用域:动态作用域是一个在运行时被动态确定的形式,而不是静态时被确定。...2; 可是动态作用域会顺着调用栈去寻找变量,所以打印结果 3。...默认绑定下的 this 非严格模式的情况下,默认指向全局的 window 对象,而在严格模式的情况下,则指向 undefined。...ps2: this 所在的词法作用域在编写或声明时添加了"use strict",那么,运行时 this 指向 undefined,但是,如果 this 所在的函数作用域中并未添加"use strict...ps:js 的许多内置函数都提供了可选参数,用来实现绑定上下文对象,例:数组的 forEach、map、filter 等方法,第一个参数回调函数,第二个将绑定的上下文对象

43940

16期-熬夜7天,我总结了JavaScript与ES的25个重要知识点!

a,只读属性赋值会抛出TypeError;b,对不可配置的属性使用delete操作符会抛出TypeError;c,不可扩展的对象添加属性会抛出TypeError。...,后面的参数都是源对象 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性 由于undefined和null无法转成对象,所以如果它们作为参数,就会报错 如果undefined...[1, 2, 3]; } const [a, b, c] = f(); // a = 1, b = 2, c = 3 ES6 JavaScript深度解构 默认情况下,找不到的属性undefined...,被代理的值Promise对象创建时可能是未知的,它允许你异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的...对象的集合,当其中的一个promise成功,就返回那个成功的promise的值 Promise.reject(reason) 返回一个状态失败的Promise对象,然后将失败信息传递给对应的处理方法

60220

系统刷JavaScripit 构建前端体系(语法篇)

注意: 定义变量时,它的值初始化可以用 null 来 赋值初始化,因为这样就可以保留 null 空指针语义,从而与 undefined 区分开来。...( ) : 返回对象对应的值 作用域 函数参数 ECMAscript 中函数的参数就是局部变量 当在函数内部,重写了参数,它会变成本地对象指针,而本地对象函数执行结束时就销毁了。...我第一开始以为结果 22 , 以引用传递的。 当我刷了高程4变量这章节才知道,它是以值传递的。...这样说明了 函数对象参数是以值传递的。 确定类型 通常我们想知道一个变量的类型为什么类型时,可以通过 typeof 判断。...浏览器中,它的上下文 window 对象,并且所有通过 var定义的全局变量和函数都会成为window 对象的属性和行为。

27920

系统刷JavaScripit 构建前端体系(语法篇)

注意: 定义变量时,它的值初始化可以用 null 来 赋值初始化,因为这样就可以保留 null 空指针语义,从而与 undefined 区分开来。...( ) : 返回对象对应的值 ❞ 作用域 函数参数 ❝ECMAscript 中函数的参数就是局部变量 当在函数内部,重写了参数,它会变成本地对象指针,而本地对象函数执行结束时就销毁了。...我第一开始以为结果 22 , 以引用传递的。 当我刷了高程4变量这章节才知道,它是以值传递的。...这样说明了 函数对象参数是以值传递的。 ❞ 确定类型 ❝通常我们想知道一个变量的类型为什么类型时,可以通过 typeof 判断。...浏览器中,它的上下文 window 对象,并且所有通过 var定义的全局变量和函数都会成为window 对象的属性和行为。

29930

js代码规范

函数体内,注意函数变量的说明,函数内使用到的变量要在函数头部进行尽量统一明,尤其很多入参或者出参的时候。...变量声明时每个逗号之间。 变量作用域 js没有有块级作用域,只有函数作用域。 [] {} 的用法 使用直接量发来声明对象和数组。...不建议修改内建对象的原型链 内建对象的原型链 是比较好的标准 自己不要修改内建对象的相关方法 在内建对象的es5 es6 语法中有哪些 this关键字的使用场景 : 全局变量 ,触发元素,构造器本身...logTruthyFalsy('0'); // truthy - logTruthyFalsy(false); // falsy - logTruthyFalsy(0); // falsy - logTruthyFalsy(undefined...尽量使用语法严格模式 消除代码之中的不友好;代码运行更快 ;保证运行的安全 ;新版本的js做好铺垫。 22.

8.8K30

熬夜7天,我总结了JavaScript与ES的25个重要知识点!

:a,只读属性赋值会抛出TypeError;b,对不可配置的属性使用delete操作符会抛出TypeError;c,不可扩展的对象添加属性会抛出TypeError。...,后面的参数都是源对象 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性 由于undefined和null无法转成对象,所以如果它们作为参数,就会报错 如果undefined...[i]; // 对于undefined和null源中不会报错,会直接跳过 if(source !...,被代理的值Promise对象创建时可能是未知的,它允许你异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的...对象的集合,当其中的一个promise成功,就返回那个成功的promise的值 Promise.reject(reason) 返回一个状态失败的Promise对象,然后将失败信息传递给对应的处理方法

1.7K30
领券