':' (โคลอน) ทำอะไรใน JavaScript


178

ฉันเรียนรู้จาวาสคริปต์และในขณะที่สืบค้น jQuery library ฉันเห็นว่า:(เครื่องหมายจุดคู่) ถูกใช้งานบ่อย สิ่งนี้ใช้สำหรับ JavaScript ได้อย่างไร

// Return an array of filtered elements (r)
// and the modified expression string (t)
   return { r: r, t: t };

คำตอบ:


247
var o = {
    r: 'some value',
    t: 'some other value'
};

เทียบเท่ากับหน้าที่

var o = new Object();
o.r = 'some value';
o.t = 'some other value';

14
คล้ายกับไวยากรณ์เริ่มต้นของวัตถุ C # ขอบคุณ!
คา

เกิดอะไรขึ้นถ้าไม่มีวัตถุล้อมรอบ?
theonlygusti

@ FranciscI.B ถ้าฉันต้องเดาฉันคิดว่านั่นเป็น TypeScript ซึ่งเป็นจาวาสคริปต์ มันประกาศคลาสโดยมี var ชื่อ xMin ซึ่งเป็นประเภทแบบลอย สวยมากนั่นคือความหมาย
Sal_Vader_808

96

และยังสามารถใช้เครื่องหมายโคลอนเพื่อติดป้ายข้อความ ตัวอย่างเช่น

var i = 100, j = 100;
outerloop:
while(i>0) {
  while(j>0) {
   j++

   if(j>50) {
     break outerloop;
   }
  }
i++

}

1
LABEL A (แถลงการณ์)
Muhammad Umer

4
ยินดีต้อนรับสู่ Spagetti Code :)
Leo The Four

goto ไม่สามารถปลอมแปลงได้: คุณเพียงแค่ข้าม goto; และคุณได้พบมัน! ;)
แอนดรู

1
หน้าอ้างอิง MDN สำหรับป้ายกำกับ JS: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Peter

ใช่นั่นคือเหตุผลที่ => {b: 2} จะไม่โยนและส่งคืนไม่ได้กำหนด
Pavlo D

70

พวกคุณลืมไปว่าเครื่องหมายทวิภาคยังใช้ในผู้ประกอบการที่ประกอบไปด้วย (แม้ว่าฉันจะไม่รู้ว่า jquery ใช้เพื่อจุดประสงค์นี้หรือไม่)

ผู้ประกอบการที่ประกอบไปด้วยเป็นรูปแบบการแสดงออก (การแสดงออกกลับค่า) ของคำสั่ง if / then มันใช้แบบนี้:

var result = (condition) ? (value1) : (value2) ;

ผู้ประกอบการที่สามยังสามารถใช้ในการผลิตผลข้างเคียงเช่นถ้า / แล้ว แต่นี่คือการปฏิบัติที่ไม่ดีอย่างลึกซึ้ง


2
AKA "ผู้ประกอบการที่สาม" โปรดทราบว่า OP กำลังถามเกี่ยวกับตัวอักษรของวัตถุอย่างเคร่งครัด ถ้าเราจะไปไกลกว่าที่ขอ OP ก็ใช้เครื่องหมายโคลอนในป้ายกำกับด้วย
Ates Goral

14
ใช่ฉันหมายความว่าอย่างนั้น ฉันควรจะอยู่นอกอินเทอร์เน็ตจริงๆถ้าฉันจะไปรอบ ๆ แนวคิดการเขียนโปรแกรมที่ระบุอย่างผิด ๆ อย่างโจ่งแจ้ง
Breton

มันจะยอดเยี่ยมมากที่จะเห็นมันใช้สำหรับป้ายกำกับและสิ่งอื่น ๆ ดังนั้นการใช้งานจึงไม่สับสน @AtesGoral เพราะตอนนี้ฉันยังคงใช้งาน Google อยู่ตอนนี้
เชน

อาจเป็นการง่ายกว่าที่จะแสดงรายการสิ่งต่าง ๆ ที่: ไม่ได้ใช้ใน Javascript
kingfrito_5005

45

':' เป็นตัวคั่นสำหรับคู่ของค่าคีย์โดยทั่วไป ในตัวอย่างของคุณเป็นสัญกรณ์ตัวอักษรของ Javascript Object

ในจาวาสคริปต์วัตถุจะถูกกำหนดด้วยเครื่องหมายโคลอนคั่นตัวระบุสำหรับคุณสมบัติและค่าของมันเพื่อให้คุณสามารถมีสิ่งต่อไปนี้:

return { 
    Property1 : 125,
    Property2 : "something",
    Method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

แล้วใช้มันเช่น:

var o =  { 
    property1 : 125,
    property2 : "something",
    method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

alert(o.property1); // Will display "125"

ส่วนย่อยของสิ่งนี้เรียกอีกอย่างว่า JSON (สัญลักษณ์ของ Javascript Object) ซึ่งมีประโยชน์ในการโทร AJAX เพราะมันมีขนาดกะทัดรัดและรวดเร็วในการแยกวิเคราะห์ในภาษาฝั่งเซิร์ฟเวอร์และ Javascript สามารถทำให้ซีเรียลสตริง JSON เป็นวัตถุได้อย่างง่ายดาย

// The parenthesis '(' & ')' around the object are important here
var o = eval('(' + "{key: \"value\"}" + ')');

คุณสามารถใส่รหัสไว้ในเครื่องหมายคำพูดหากมันมีอักขระพิเศษหรือช่องว่างบางประเภท แต่ฉันไม่อยากจะแนะนำเพราะมันทำให้การทำงานยากขึ้น

โปรดทราบว่าสัญกรณ์ตัวอักษรของวัตถุ JavaScriptในภาษา JavaScript จะแตกต่างจากมาตรฐาน JSON สำหรับการส่งข้อความ ความแตกต่างที่สำคัญระหว่าง 2 คือฟังก์ชั่นและตัวสร้างไม่ได้เป็นส่วนหนึ่งของมาตรฐาน JSONแต่ได้รับอนุญาตในตัวอักษรวัตถุ JS


2
เมื่อฉันอ่านคำตอบของคุณฉันคิดว่าฉันจะโหวตให้ แต่คุณบอกว่า "เป็นที่รู้จักกันในนาม JSON" ตัวอักษรของวัตถุและ JSON นั้นไม่เหมือนกันแน่นอนตัวอย่างของคุณก่อนที่คุณจะพูดถึง JSON นั้นไม่ใช่ JSON ที่ถูกต้อง
nnnnnn

@nnnnnn ความแตกต่างระหว่าง 2 นั้นลึกซึ้งมาก แต่สิ่งที่สำคัญก็คือ ฉันได้อัปเดตคำตอบของฉันให้เฉพาะเจาะจงมากขึ้นเกี่ยวกับเรื่องนั้น
Dan Herbert

1
ฉันเห็นการปรับปรุง ดี โปรดทราบว่า JSON ต้องการชื่อคีย์ที่อยู่ในเครื่องหมายคำพูด
nnnnnn

ทำไมคุณต้องพูดถึงทั้งหมดนี้สองครั้ง เมื่อคุณพูดว่า "แล้วใช้เหมือน"
Harsha

17

มันเป็นส่วนหนึ่งของไวยากรณ์ตัวอักษรของวัตถุ รูปแบบพื้นฐานคือ:

var obj = { field_name: "field value", other_field: 42 };

จากนั้นคุณสามารถเข้าถึงค่าเหล่านี้ได้ด้วย:

obj.field_name; // -> "field value"
obj["field_name"]; // -> "field value"

คุณสามารถมีฟังก์ชั่นเป็นค่าโดยทั่วไปให้วิธีการของวัตถุ:

obj['func'] = function(a) { return 5 + a;};
obj.func(4);  // -> 9

1
เยี่ยมมากเพราะมันทำให้ฉันมีคำในการค้นหาและค้นหาข้อมูลเพิ่มเติม
johnny

13

มันสามารถใช้ในการแสดงรายการวัตถุในตัวแปร นอกจากนี้ยังใช้เล็กน้อยในชวเลขของประโยคถ้า:

var something = {face: 'hello',man: 'hey',go: 'sup'};

และเรียกมันเช่นนี้

alert(something.man);

นอกจากนี้หากประโยค:

function something() {  
  (some) ? doathing() : dostuff(); // if some = true doathing();, else dostuff();
}

10

อย่าลืมคำสั่ง switch ที่จะใช้เครื่องหมายจุดคู่หลัง "case" แต่ละอัน


10

โดยทั่วไปจะเป็นสถานการณ์ที่ใช้เครื่องหมาย ':' ใน JavaScript

1- การประกาศและการเริ่มต้นวัตถุ

var Car = {model:"2015", color:"blue"}; //car object with model and color properties

2- การตั้งค่าฉลาก (ไม่แนะนำเนื่องจากจะทำให้เกิดโครงสร้างการควบคุมที่ซับซ้อนและรหัสสปาเก็ตตี้)

List: 
while(counter < 50)
{
     userInput += userInput;
     counter++;
     if(userInput > 10000)
     {
          break List;
     }
}

3- ในคำสั่งสลับ

switch (new Date().getDay()) {
    case 6:
        text = "Today is Saturday";
        break; 
    case 0:
        text = "Today is Sunday";
        break; 
    default: 
        text = "Looking forward to the Weekend";
}

4- ในผู้ประกอบการที่สาม

document.getElementById("demo").innerHTML = age>18? "True" : "False";

1
||ลำไส้ใหญ่เดียวนอกจากนี้ยังสามารถนำมาใช้สำหรับการประเมินผลการลัดวงจรแทน ตัวอย่าง: var a = false, b = a || 'Default value';เทียบเท่ากับvar a = false, b = a : 'Default value';
Shaun Cockerill

7

นั่นคือ JSON หรือสัญลักษณ์วัตถุ JavaScript มันเป็นวิธีที่รวดเร็วในการอธิบายวัตถุหรือแผนที่แฮช สิ่งที่อยู่ข้างหน้าลำไส้ใหญ่คือชื่อทรัพย์สินและสิ่งที่อยู่หลังลำไส้ใหญ่คือค่าของมัน ดังนั้นในตัวอย่างนี้มีคุณสมบัติ "r" ซึ่งมีค่าเป็นอะไรก็ตามในตัวแปร r เหมือนกันสำหรับ


3
JSON เป็นเพียงส่วนหนึ่งของไวยากรณ์การเริ่มต้นวัตถุ JavaScript '{a: k ()}' โดยที่ k คือฟังก์ชั่นไม่ใช่ JSON แต่เป็นไวยากรณ์การเริ่มต้นวัตถุ JavaScript ที่สมบูรณ์แบบ
yfeldblum

12
เป็นคนไร้อารมณ์ไม่ใช่ไม่ใช่ "JSON" มันมีลักษณะเหมือน JSON มันคือไวยากรณ์ตัวอักษรของวัตถุที่เป็นภาษาจาวาสคริปต์และสามารถปรากฏขึ้นภายในโค้ดโดยตรง JSON ในอีกทางหนึ่งคือรูปแบบการจัดลำดับข้อมูล / การแลกเปลี่ยน JSON เป็น JSON ก็ต่อเมื่อมัน "อากาศ" คือในระหว่างการขนส่งหรือเมื่อยังไม่ได้แยกเป็นวัตถุจริง
Ates Goral

3
+1 สำหรับ Ates Goral แต่โปรดทราบว่าตัวอย่างที่ให้มาไม่ได้ดูเหมือน JSON: ชื่อจะต้องอยู่ในเครื่องหมายคำพูดคู่เพื่อให้เป็นไวยากรณ์ JSON ที่ถูกต้อง
NickFitz

3

หนึ่งความผิดพลาดโง่ฉันไม่นานมานี้ที่อาจช่วยบางคน

โปรดทราบว่าหากคุณใช้ ":" ในเหตุการณ์เช่นนี้ค่าจะไม่เปลี่ยนแปลง

var ondrag = (function(event, ui) {
            ...

            nub0x: event.target.offsetLeft + event.target.clientWidth/2;
            nub0y = event.target.offsetTop + event.target.clientHeight/2;

            ...
        });

ดังนั้น "nub0x" จะเริ่มต้นด้วยเหตุการณ์แรกที่เกิดขึ้นและจะไม่เปลี่ยนค่าของมัน แต่ "nub0y" จะเปลี่ยนไปในช่วงเหตุการณ์ถัดไป


ฉันมาที่นี่และ fyi ที่จริงสิ่งที่เกิดขึ้นที่นี่คือคุณกำลังใช้ป้ายกำกับก่อนที่คำสั่งของคุณ ไม่มีการกำหนด แต่คำสั่งevent.target.offsetLeft + event.target.clientWidth/2;จะทำงานทุกครั้งที่เรียกใช้เมธอด ondrag ของคุณ แต่ไม่เคยกำหนดค่าให้กับnub0x
kketch

จริงนี้จะถูกใช้เป็นการประเมินผลและจะถูกปฏิบัติราวกับว่ามันเป็น: ||ดังนั้นevent.target.offsetLeft + event.target.clientWidth/2;จะทริกเกอร์แต่ละครั้งที่มีค่าnub0xเท่ากับเท็จ
Shaun Cockerill

1

การใช้โคลอนใน JavaScript ก็คือเปลี่ยนชื่อตัวแปรนั่นคือ:

const person = { 
    nickNameThatIUseOnStackOverflow: "schlingel",
    age: 30,
    firstName: "John"
};
const { nickNameThatIUseOnStackOverflow: nick } = person; // I take nickNameThatIUseOnStackOverflow but want to refer it as "nick" from now on.
nick = "schling";

สิ่งนี้มีประโยชน์หากคุณใช้ไลบรารีบุคคลที่สามที่ส่งคืนค่าที่มีชื่อตัวแปรที่ไม่แน่นอน / ยาวที่คุณต้องการเปลี่ยนชื่อในรหัสของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.