2016-12-09 37 views
25

arasındaki fark nedir? Elektron çalışırken, BrowserWindow nesnesini almanın 2 yolunu buldum. 'Const {}' Ben JS hakkında önemli bir şey kaçırmak work.Do neden ben anlayamıyorum javascript const ve const {} arasındaki fark nedirconst ve const {} in javascript

const {BrowserWindow} = require('electron') 

ve

const electron = require('electron') 
const BrowserWindow = electron.BrowserWindow 

?

cevap

36

İki kod parçası eşdeğerdir ancak birincisi daha kısa olması için ES6 destructuring assignment kullanıyor.

const obj = { 
 
    name: "Fred", 
 
    age: 42, 
 
    id: 1 
 
} 
 

 
//simple destructuring 
 
const { name } = obj; 
 
console.log("name", name); 
 

 
//assigning multiple variables at one time 
 
const { age, id } = obj; 
 
console.log("age", age); 
 
console.log("id", id); 
 

 
//using different names for the properties 
 
const { name: personName } = obj; 
 
console.log("personName", personName);

2

Bu ES6 yeni özelliklerden biridir:

şöyle çalışır hızlı bir örnektir. Kıvırcık parantez notasyonu, destructing assignment'un bir parçasıdır. Bunun anlamı artık nesne kendisini almak ve size böyle bir şey yapabileceği ayrı satırlara istediğiniz her özellik için değişkenleri atamak zorunda olmalarıdır: gördüğümüz gibi

const obj = { 
 
    prop1: 1, 
 
    prop2: 2 
 
} 
 

 
// previously you would need to do something like this: 
 
const firstProp = obj.prop1; 
 
const secondProp = obj.prop2; 
 
console.log(firstProp, secondProp); 
 
// etc. 
 

 
// however now you can do this on the same line: 
 
const {prop1, prop2} = obj; 
 
console.log(prop1, prop2);

Sonunda işlevsellik aynıdır - sadece bir nesneden bir özellik elde etmek.

da kurucuların atama daha var - MDN'yi bütün sözdizimi kontrol edebilirsiniz: sözdizimi Üstü https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

2
const {BrowserWindow} = require('electron') 

kullanır nesne tanımladıktan ES6.If olarak: - Şimdi

const obj={ 
    email: "[email protected]", 
    title: "Hello world" 
} 

e-postayı ve objenin tap alanını atamak veya kullanmak istiyorsak, o zaman tüm sözdizimini

const email = obj.email; 
const title = obj.title; 

Bu eski okul şimdi.

Biz böyle kullanmak isteyen alanların isimlerini yazmaya bizim object obj nesnesi 20. alanları içeriyorsa, o zaman biz sadece var yani ES6 zarar veren atama kullanabilirsiniz: -

const { email,title } = obj; 

Bu ES6 sözdizimi daha basit bir Otomatik olarak e-posta ve başlıktan objeden atar, yalnızca gerekli alan için adın doğru olarak belirtilmesi gerekir.