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

我是学习Javascript的新手。想知道为什么条件在没有链接到构造函数中的字段时会起作用

条件在没有链接到构造函数中的字段时起作用是因为在JavaScript中,条件语句是根据表达式的值来决定执行的代码块。当条件语句中的表达式为真时,执行相应的代码块;当表达式为假时,跳过相应的代码块。

在构造函数中,字段是用来存储对象的属性值的变量。当我们创建一个对象实例时,构造函数会被调用,并且可以通过构造函数中的参数来初始化对象的字段。如果条件语句中使用的字段没有被链接到构造函数中,那么这个字段的值将是undefined,而undefined在条件判断中被视为假值。

举个例子,假设有以下的构造函数和条件语句:

代码语言:txt
复制
function Person(name, age) {
  this.name = name;
  // age字段没有被链接到构造函数中
}

var person = new Person("John", 25);

if (person.age) {
  console.log("Age is defined");
} else {
  console.log("Age is not defined");
}

在上面的例子中,由于age字段没有被链接到构造函数中,它的值为undefined。因此,条件语句中的表达式person.age的值为假,所以会执行else代码块,输出"Age is not defined"。

在这种情况下,如果我们希望条件语句中的字段起作用,我们需要在构造函数中将字段链接起来,例如:

代码语言:txt
复制
function Person(name, age) {
  this.name = name;
  this.age = age;
}

var person = new Person("John", 25);

if (person.age) {
  console.log("Age is defined");
} else {
  console.log("Age is not defined");
}

在这个例子中,age字段被链接到构造函数中,并且通过构造函数的参数进行初始化。因此,条件语句中的表达式person.age的值为真,所以会执行if代码块,输出"Age is defined"。

总结起来,条件在没有链接到构造函数中的字段时会起作用是因为在JavaScript中,条件语句是根据表达式的值来决定执行的代码块。如果字段没有被链接到构造函数中,它的值将是undefined,被视为假值。如果希望条件语句中的字段起作用,需要在构造函数中将字段链接起来。

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

相关·内容

TypeScript 看见未来的 JavaScript

中没有类,只有对象,要实现所谓的“类式操作”(classical operations),如封装、多态等,要通过若干基础设施,如原型、构造函数等来完成。...这些对于非常熟悉JavaScript的程序员来说,也许都是可以完成的任务,但对于新手来说就困难重重了。并且,即使是高手,一段时间不写相关的代码也很容易遗忘和出错。...所以说TypeScript是JavaScript的未来,是更好的JavaScript 为什么要学习 TypeScript ,实际上 JavaScript 已经够用了,而且像我没学过 TypeScript...、 TypeScript 是微软开发和控制的开源项目,我在应用 Anguar 2 + Ionic 2 + 框架开发系统时使用的就是 TypeScript,但我一直把 TypeScript 当作 JavaScript...来用的,甚至是照猫画虎,所以我想正儿八经的学习下 TypeScript,弄明白我糊里糊涂使用的东西,这篇 Chat分享算是我的一个学习笔记,如果你想和我一样,想知道以下内容,请来我的 Chat: 为什么要学习

79030

译文:开发人员面临的 10个最常见的JavaScript 问题

事实上,对于任何有经验的软件开发人员来说,将基本的JavaScript功能构建到网页中都是一项相当简单的任务,即使他们是JavaScript的新手。...因此,要传递给setTimeout()的匿名函数是在window对象的上下文中定义的,该对象没有clearBoard()方法。...而且,仅在实际上从未使用过replaceThing的功能的主体和函数中引用。 因此,我们再次想知道为什么这里存在内存泄漏。 为了理解发生了什么,我们需要更好地了解JavaScript的内部工作原理。...因此,如果在没有名称的情况下调用构造函数,则名称将默认为default。...写在最后 与任何技术一样,你越了解JavaScript为什么以及如何工作和不起作用,你的代码就越可靠,你就越能有效地利用语言的真正力量。

1.3K20
  • 字节跳动最爱考的前端面试题:JavaScript 基础

    在 JavaScript 中,我们将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套子作用域中根据标识符名称进行变量(变量名或者函数名)查找 什么是作用域链?...而且,对象属性链只有上一层或者说最后一层在调用位置中起作用 function foo() { console.log(this.a); } var obj = { a: 2, foo: foo...[[Prototype]] 链最终都会指向内置的 Object.prototype,其包含了 JavaScript 中许多通用的功能 为什么能创建 “类”,借助一种特殊的属性:所有的函数默认都会拥有一个名为...= Person 在发生 new 构造函数调用时,会将创建的新对象的 [[Prototype]] 链接到 Person.prototype 指向的对象,这个机制就被称为原型链继承 方法定义在原型上,...,如果没有找到,就去构造这个实例对象的构造函数的 prototype 所指向的对象上去查找,如果还找不到,就从这个 prototype 对象所指向的构造函数的 prototype 原型对象上去查找 什么是原型链

    1.4K20

    JavaScript 知识点整理

    原型 最后,我们将需要共享的方法和属性定义在原型上,把专属于实例的方法和属性放到构造函数中。到这儿,我们就通过构造函数+原型的方式定义了一个类。...这并没有什么神奇的,在父函数中定义子函数就可以创建闭包,而子函数可以访问父函数的作用域。 我们通常是因为被闭包坑了,才会被闭包吓到,尤其是面试题里一堆闭包。...// 当我们回头执行subFuncs中的函数的时候,我们得到的i其实一直都是10,为什么?...✦ JavaScript的基础主要包括:5中基本数据类型、1种复杂的数据类型、操作符、控制语句、函数等。 ✦ 了解基本的语法后,你还需要学习学习JavaScript的变量、作用域、作用域链。...记住递归的最佳实践、闭包的定义及缺陷、闭包的适用场景。 JavaScript作为一门动态语言,和其他语言有较大的差异,这也造成很多人学习JavaScript时会觉得难学。

    73250

    JavaScript 知识点整理

    原型 最后,我们将需要共享的方法和属性定义在原型上,把专属于实例的方法和属性放到构造函数中。到这儿,我们就通过构造函数+原型的方式定义了一个类。...这并没有什么神奇的,在父函数中定义子函数就可以创建闭包,而子函数可以访问父函数的作用域。 我们通常是因为被闭包坑了,才会被闭包吓到,尤其是面试题里一堆闭包。...// 当我们回头执行subFuncs中的函数的时候,我们得到的i其实一直都是10,为什么?...✦ JavaScript的基础主要包括:5中基本数据类型、1种复杂的数据类型、操作符、控制语句、函数等。 ✦ 了解基本的语法后,你还需要学习学习JavaScript的变量、作用域、作用域链。...记住递归的最佳实践、闭包的定义及缺陷、闭包的适用场景。 JavaScript作为一门动态语言,和其他语言有较大的差异,这也造成很多人学习JavaScript时会觉得难学。

    84850

    JavaScript 知识点梳理 | 从基础语法到高级用法

    使用构造函数创建自定义类型,然后使用new操作符来创建类的实例,但是构造函数上的方法和属性在每个示例上都存在,不能共享,于是我们引入原型来实现方法和属性的共享。 ?...原型 最后,我们将需要共享的方法和属性定义在原型上,把专属于实例的方法和属性放到构造函数中。到这儿,我们就通过构造函数+原型的方式定义了一个类。...这并没有什么神奇的,在父函数中定义子函数就可以创建闭包,而子函数可以访问父函数的作用域。 我们通常是因为被闭包坑了,才会被闭包吓到,尤其是面试题里一堆闭包。...JavaScript的基础主要包括:5中基本数据类型、1种复杂的数据类型、操作符、控制语句、函数等。 了解基本的语法后,你还需要学习学习JavaScript的变量、作用域、作用域链。...JavaScript作为一门动态语言,和其他语言有较大的差异,这也造成很多人学习JavaScript时会觉得难学。

    1.2K50

    面向 JavaScript 开发人员的 ECMAScript 6 指南(3):JavaScript 中的类

    在 第 2 部分 中,您学习了 ECMAScript 6 中的函数增强,包括新的箭头和生成器函数。将函数元素集成到 JavaScript 代码中意味着要重新考虑某些因素,但变化没有您想象的那么大。...在本期文章中,将学习如何在 JavaScript 中定义类和属性,以及如何使用原型链向 JavaScript 程序引入继承。...您可能认为,原型链类似于 Java 或 C++/C# 中的继承,但两种技术之间只有一个真正的相似点:当 JavaScript 需要解析一个没有直接包含在对象上的符号时,它会沿原型链查找可能的匹配值。...此外,从清单 11 中的 Author 构造函数可以看到,关键字 super 显然会在原型链中向上调用给定方法的原型版本。在本例中,调用了构造函数,让 Person 构造函数有机会执行发挥自己的作用。...因此,尽管没有显式的语法来定义静态字段,但可以直接在类型对象上引用字段。在上面的示例中,Person 构造函数首先检查 Person 是否已有一个 population 字段。

    67240

    JavaScript继承背后的场景-prototype,__proto__, ]

    通过构造函数来创建对象 除了通过指定模式创建对象之外,构造函数还可以执行另一个有用的操作 - 它会自动为新创建的对象设置原型对象。此原型对象存储在构造函数的原型对象属性中。...JavaScript经典继承图 这也是通过构造函数来创建对象,但是在这一系列的对象和实例之间我们的焦点是放在原型链上。原型对象其实也是普通的对象,也有属于它们自己的属性。...如果原型具有对其原型的非空引用,依此类推,则称为原型链。 以下是JavaScript经典继承的图表。构造函数Foo只是虚构类的类名。foo对象是Foo的一个实例。 ?...proto and prototype的关系: JavaScript的经典继承就像这样:我是一个构造函数,我只是一个函数,我持有一个原型引用,每当调用foo = new Foo()时,我会让foo ._...是在使用new操作符创建对象时用于构建__proto__的对象,在实例化的对象上(或其他对象)不可使用,仅在构造函数上使用,因为它是从Funtion和Object上复制的。

    64910

    新手学习 react 迷惑的点(一)

    ,还反人类啥的,所以我打算写两篇文章来讲新手学习 React 的时候容易迷惑的点写出来,如果你还以其他的对于学习 React 很迷惑的点,可以在留言区里给我留言。...为什么要调用 super 其实这不是 React 的限制,这是 JavaScript 的限制,在构造函数里如果要调用 this,那么提前就要调用 super,在 React 里,我们常常会在构造函数里初始化...那还是不行的,不然官网也不会建议你调用 props 了,虽然 React 会在构造函数运行之后,为 this.props 赋值,但在 super() 调用之后与构造函数结束之前, this.props...undefined   }   // ... } 要是构造函数中调用了某个访问 props 的方法,那这个 bug 就更难定位了。...后记 这是这个系列的第一篇,这些问题也是在我的一个「React交流群」里大家提出来的一些他们刚学 react 的时候容易迷惑的点,下一篇不出意外就是解答以下迷惑的点,如果有其他的问题想知道的,欢迎在评论区留言

    71030

    我仅用50 行 JavaScript 代码从头构建区块链,向你介绍区块链的工作原理

    今天的文章中,我将通过仅使用 50 行 JavaScript 代码从头构建区块链,向您展示区块链的工作原理。 在我们开始之前,我想指出,如果您了解一些基本的编程知识,这篇文章会更容易理解。...1、创建块类 让我们在一个空的 index.js 文件中创建一个名为“Block”的类。 此类的构造函数接受 2 个参数。第一个是前一个区块的哈希值,第二个是当前区块的数据。...在构造函数内部,我们使用构造函数参数初始化块数据。我们将 timeStamp 设置为当前时间,将 proofOfWork 设置为 0。 还记得我说过我们需要计算哈希值吗?...因为散列只在一个方向上起作用,所以很容易找到给定输入的散列输出,但很难从散列输出中预测输入。 我们来看一下calculateHash函数。...genesis block 它基本上是链中的第一个块。因此,我们可以传递“0”作为前一个哈希值,因为没有前一个块。 接下来,我们将实现 addBlock 函数,该函数将一个新块添加到链中。

    1.1K20

    ES2020 系列:可选链 ?. 为啥出现,我们能用它来干啥?

    我们大多数用户的地址都存储在 user.address 中,街道地址存储在 user.address.street 中,但有些用户没有提供这些信息。...但是在很多实际场景中,我们更希望得到的是 undefined(表示没有 street 属性)而不是一个错误。 ……还有另一个例子。...可能最先想到的方案是在访问该值的属性之前,使用 if 或条件运算符 ? 对该值进行检查,像这样: let user = {}; alert(user.address ?...就像你所看到的,在代码中我们仍然重复写了好几遍对象属性名。例如在上面的代码中,user.address 被重复写了三遍。 这就是为什么可选链 ?. 被加入到了 JavaScript 这门编程语言中。...name = "John"; // Error,不起作用 // 因为它在计算的是 undefined = "John" 这还不是那么智能。 总结 可选链 ?. 语法有三种形式: obj?.

    93840

    【前端词典】继承

    这些方法都以事先内置在 JavaScript 中,直接调用即可。上面我标红了两个特别的属性 constructor 和 __proto__。这两个属性接下来我都会讲。...我听到有人在问为什么? 因为这个 __proto__.constructor 指向的是 Object。 我们知道:一个函数的原型对象的构造函数是这个函数本身。...我看到的一个解释是这样的: 其他所有的构造函数都可以通过原型链找到 Function.prototype ,并且 functionFunction() 本质也是一个函数,为了不产生混乱就将 functionFunction...小结 基于构造函数和原型链 通过 hasOwnProperty() 方法来确定自身属性与其原型属性 通过 isPrototypeOf() 方法来确定原型和实例的关系 在实例中可以修改原型中引用类型的值...小结 基于构造函数,没有使用原型链 子对象和父对象公用一个原型对象 三、借用构造函数法 此方法可以解决原型中引用类型值被修改的问题 function staff(){ this.test = [1,2,3

    60470

    字节前端高频面试题

    [Prototype] 链最终都会指向内置的 Object.prototype,其包含了 JavaScript 中许多通用的功能为什么能创建 “类”,借助一种特殊的属性:所有的函数默认都会拥有一个名为...= Person在发生 new 构造函数调用时,会将创建的新对象的 [Prototype] 链接到 Person.prototype 指向的对象,这个机制就被称为原型链继承方法定义在原型上,属性定义在构造函数上首先要说一下...,也就是通过 [Prototype] 链接到了这个原型对象然后说一下 JS 中属性的查找:当我们试图引用实例对象的某个属性时,是按照这样的方式去查找的,首先查找实例对象上是否有这个属性,如果没有找到,就去构造这个实例对象的构造函数的...] 属性链接,所以被称为原型链什么是原型链继承,类比类的继承:当有两个构造函数 A 和 B,将一个构造函数 A 的原型对象的,通过其 [Prototype] 属性链接到另外一个 B 构造函数的原型对象时...在箭头函数中访问arguments实际上获得的是它外层函数的arguments值。

    32610

    ES2020 骚操作:可选链 ?.

    我们大多数用户的地址都存储在 user.address 中,街道地址存储在 user.address.street 中,但有些用户没有提供这些信息。...但是在很多实际场景中,我们更希望得到的是 undefined(表示没有 street 属性)而不是一个错误。 ……还有另一个例子。...可能最先想到的方案是在访问该值的属性之前,使用 if 或条件运算符 ? 对该值进行检查,像这样: let user = {}; alert(user.address ?...就像你所看到的,在代码中我们仍然重复写了好几遍对象属性名。例如在上面的代码中,user.address 被重复写了三遍。 这就是为什么可选链 ?. 被加入到了 JavaScript 这门编程语言中。...name = "John"; // Error,不起作用 // 因为它在计算的是 undefined = "John" 这还不是那么智能。 总结 可选链 ?. 语法有三种形式: obj?.

    75410

    美团前端春招三面面经

    然后开始问问题 盒模型,bfc float,position,清除浮动 请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景? JavaScript原型,原型链 ? 有什么特点?...Javascript如何实现继承? 构造函数继承,非构造函数继承 Javascript作用链域? 什么是闭包(closure),为什么要用它? .call() 和 .apply() 的含义和区别?...jsonp cors ,jsonp原理 11.promise的原理 一面结束,问还有什么要问他的,就问了一下有什么不足需要加强的地方,面试官说基础挺好的,我这里没有什么了,你可以请教一下后面的面试官,然后...,面试官说去帮忙看下还有没有人在,让我等一下。...讲到了自己学习react的经历,如何快速学习并投入公司项目当中的 请求头包含哪些部分 服务端渲染?

    1.3K80

    《JavaScript 模式》读书笔记(5)— 对象创建模式4

    七、对象常量 JavaScript中没有常量的概念,虽然许多现代的编程环境可能为您提供了用以创建常量的const语句。...链模式的一个缺点在于以这种方式编写的代码更加难以调试。或许直到在某个特定的代码行中发生错误,但是在此行中实际执行了太多步骤。当链中多个方法其中一个静默失效时,无法直到是哪一个方法失效了。   ...现在回想起来,他承认使JavaScript类似类的思想并不是值得推荐的方案,但是它仍然是一种令人关注的模式,有可能在一些应用程序中遇到这种模式。   使用构造函数看起来就像是在使用Java中的类。...这也就是为什么可服用方法应该添加到构造函数的prototype属性中的原因。   向编程语言中添加便利的功能通常也称之为语法糖。...如果没有,那么继续添加函数,并将其作为implementation参数传递给构造函数的原型。在这种情况下,this指的是构造函数,其原型得到了增强。

    28940

    7个 Javascript 面试题及回答策略

    由于 JavaScript 通常用于用户界面,因此同时运行多个操作的能力可以带来更好的用户体验。 你是否在 JavaScript 中使用过类继承和原型继承?为什么?...我更喜欢原型继承,因为它更简单、更灵活。 在你看来,类继承是否是正确的选择?如果是的话,是在什么情况下?如果不是,为什么?...只有在极少数情况下,它可能被用到。 你如何定义函数式编程?函数式编程在 JavaScript 中的作用是什么? 解析: 函数式编程是目前 JavaScript 使用的基本原则。...面试官想知道些什么: 能够阐明任何一种方法的优缺点 提及共享资源导致的问题 了解函数式编程如何简化应用程序 参考答案: 虽然我主要使用面向对象编程方式,但是我更希望用函数式编程开发。...双向数据绑定是用户界面与模型数据动态链接的状态。如果用户界面中的字段发生了变化,模型也会发生变化,比如 Angular。

    46830

    全网最全的,最详细的,最友好的 Typescript 新手教程

    在写这篇指南之前,我并不确定,但每天我都看到很多初学者对TypeScript感兴趣。如果你决定这样做,要意识到,在你早期的时候,同时学习TypeScript和JavaScript是很难的。...现在我们要记住,TypeScript是一种特殊的JavaScript,但在浏览器中运行之前,它需要一个“转换器”。 TypeScript新手教程:为什么是TypeScript?...我想知道是否有一种方法可以在我的IDE中检查这个函数,而不需要运行代码或使用Jest测试它。这可能吗?...这是有意义的,至少在TypeScript中是这样:一般的JavaScript对象没有任何名为“url”的属性。对我来说,这是TypeScript真正开始发光的地方。...总之,我跳过了TypeScript的另一个有用特性:函数的返回类型。 要理解为返回值添加类型注释为什么很方便,请想象一下我正在摆弄您的奇特函数。

    6.1K40

    《JavaScript 模式》读书笔记(5)— 对象创建模式4

    七、对象常量 JavaScript中没有常量的概念,虽然许多现代的编程环境可能为您提供了用以创建常量的const语句。...链模式的一个缺点在于以这种方式编写的代码更加难以调试。或许直到在某个特定的代码行中发生错误,但是在此行中实际执行了太多步骤。当链中多个方法其中一个静默失效时,无法直到是哪一个方法失效了。   ...现在回想起来,他承认使JavaScript类似类的思想并不是值得推荐的方案,但是它仍然是一种令人关注的模式,有可能在一些应用程序中遇到这种模式。   使用构造函数看起来就像是在使用Java中的类。...这也就是为什么可服用方法应该添加到构造函数的prototype属性中的原因。   向编程语言中添加便利的功能通常也称之为语法糖。...如果没有,那么继续添加函数,并将其作为implementation参数传递给构造函数的原型。在这种情况下,this指的是构造函数,其原型得到了增强。

    40310

    【前端词典】必备知识-原型与原型链

    每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。 类: 是描述了一种代码的组织结构形式,一种在软件中对真实世界中问题领域的建模方法。...这些方法都以事先内置在 JavaScript 中,直接调用即可。上面我标红了两个特别的属性 constructor 和 __proto__。这两个属性接下来我都会讲。...我听到有人在问为什么? 因为这个 __proto__.constructor 指向的是 Object。 我们知道:一个函数的原型对象的构造函数是这个函数本身。...3. new 操作符 当我们使用 new 操作符时,生成的实例对象拥有了 __proto__属性。即在 new 的过程中,新对象被添加了 __proto__ 并且链接到构造函数的原型上。...我看到的一个解释是这样的: 其他所有的构造函数都可以通过原型链找到 Function.prototype ,并且 functionFunction() 本质也是一个函数,为了不产生混乱就将 functionFunction

    51620
    领券