1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-10-02 09:16:56 +02:00

Remove email addresses

This commit is contained in:
Boris Verkhovskiy
2024-05-31 12:18:45 -06:00
parent 37f0b26450
commit 3ea2b0b29f
13 changed files with 381 additions and 437 deletions

View File

@@ -4,7 +4,7 @@ contributors:
- ['Leigh Brenecki', 'https://leigh.net.au']
- ['Ariel Krakowski', 'http://www.learneroo.com']
translators:
- ["Rasendran Kirushan", "https://github.com/kirushanr"]
- ["Rasendran Kirushan", "https://github.com/kirushanr"]
filename: javascript-ta.js
lang: ta-in
---
@@ -12,37 +12,33 @@ lang: ta-in
javascript 1995 ஆம் ஆண்டு Netscape இல் பணிபுரிந்த Brendan Eich
என்பவரால் உருவாக்கபட்டது.ஆரம்பத்தில் மிகவும் எளிமையான
ஸ்க்ரிப்டிங் மொழியாக இணையதளங்களில் பயன்படுத்தபட்டது.
இது ஜாவா (java ) வில் உருவாக்கபட்ட மிகவும் சிக்கலான இணைய செயலிகளுக்கு
உதவும் முகமாக உருவாக்கபட்டது. எனினும் இணையதள பக்கங்களில் இதன் முழுதான பயன்பாடு
மற்றும் உலாவிகளில் பயன்படுத்த கூடிய வகையில் இருந்தமையாலும் Java வை விட
இது ஜாவா (java ) வில் உருவாக்கபட்ட மிகவும் சிக்கலான இணைய செயலிகளுக்கு
உதவும் முகமாக உருவாக்கபட்டது. எனினும் இணையதள பக்கங்களில் இதன் முழுதான பயன்பாடு
மற்றும் உலாவிகளில் பயன்படுத்த கூடிய வகையில் இருந்தமையாலும் Java வை விட
இணையதளகளின் முகப்பு உருவாக்கத்தில் இன்றளவில் முன்னிலை பெற்றுள்ளது.
உலாவிகளுக்கு மட்டும் மட்டுபடுத்தபடவில்லை , Node.js மூலமாக
மிகவும் பிரபல்யமடைந்து வருகின்றது , உதாரணமாக கூகிள்க்ரோம் உலாவியின்
உலாவிகளுக்கு மட்டும் மட்டுபடுத்தபடவில்லை , Node.js மூலமாக
மிகவும் பிரபல்யமடைந்து வருகின்றது , உதாரணமாக கூகிள்க்ரோம் உலாவியின்
V8 JavaScript engine Node .js உதவியுடன் இயங்குகிறது .
உங்கள் கருத்துக்கள் மிகவும் வரவேற்கபடுகின்றன , என்னுடன் தொடர்புகொள்ள
[@ExcitedLeigh](https://twitter.com/ExcitedLeigh), or
[l@leigh.net.au](mailto:l@leigh.net.au).
```js
// குறிப்புக்கள் C நிரலாக்கத்தை ஒத்தது .ஒரு வரி குறிப்புக்கள் "//" குறியீடுடன் ஆரம்பமாகும்
// குறிப்புக்கள் C நிரலாக்கத்தை ஒத்தது .ஒரு வரி குறிப்புக்கள் "//" குறியீடுடன் ஆரம்பமாகும்
/* பலவரி குறிப்புக்கள் "/*" ஆரம்பமாகி "/*" இல் முடிவடையும் */
// ஒரு கூற்று முற்றுபெற செய்ய ; இடல் வேண்டும் .
doStuff();
// ...ஆனால் அரைபுள்ளி இட வேண்டும் என்று அவசியம் இல்லை ஏன் எனில்
// ...ஆனால் அரைபுள்ளி இட வேண்டும் என்று அவசியம் இல்லை ஏன் எனில்
// ஒரு வரி புதிதாக இடப்படும் போது அரைபுள்ளிகள் தானாகவே இடப்படும் ஆனால் சில தருணங்களை தவிர .
doStuff()
// ஆனால் அவ்வாறான தருணங்கள் எதிர்பாராத முடிவுகளை தரலாம்
// ஆனால் அவ்வாறான தருணங்கள் எதிர்பாராத முடிவுகளை தரலாம்
// எனவே நாம் தொடர்ந்து ஒரு கூற்று நிறைவடையும் போது அரைபுள்ளி ஒன்றை இடுவோம் .
///////////////////////////////////
// 1. எண்கள்(Number) ,சரம் (String),செயற்குறிகள்(Operators)
// 1. எண்கள்(Number) ,சரம் (String),செயற்குறிகள்(Operators)
// JavaScript ஒரே ஒரு எண்வகை காணப்படுகிறது தசமி (which is a 64-bit IEEE 754 double).
// தசமி எண்வகை (Doubles) 2^ 52 வரை சேமிக்க கூடியது
@@ -50,7 +46,7 @@ doStuff()
3; // = 3
1.5; // = 1.5
// அடிப்படை கணித பொறிமுறைகள்
// அடிப்படை கணித பொறிமுறைகள்
1 + 1; // = 2
0.1 + 0.2; // = 0.30000000000000004
8 - 1; // = 7
@@ -61,29 +57,29 @@ doStuff()
5 / 2; // = 2.5
//bitwise பொறிமுறையை உபயோகிக்கும் போது
//உங்கள் தசம எண்ணின் பெறுமானமானது ஒரு நேர் அல்லது மறை அல்லது பூசியமாகவுள்ள முழு எண்ணாக
//மாற்றம் பெறுகிறது இது 32 இருமம்(bit) வரை செல்லலாம்
//bitwise பொறிமுறையை உபயோகிக்கும் போது
//உங்கள் தசம எண்ணின் பெறுமானமானது ஒரு நேர் அல்லது மறை அல்லது பூசியமாகவுள்ள முழு எண்ணாக
//மாற்றம் பெறுகிறது இது 32 இருமம்(bit) வரை செல்லலாம்
1 << 2; // = 4
// நிரலாக்கத்தில் செயலியை அமுல்படுத்தும் வரிசைமுறையில் அடைப்பு குறிக்கு முன்னிலை வழங்கபடுகிறது
// நிரலாக்கத்தில் செயலியை அமுல்படுத்தும் வரிசைமுறையில் அடைப்பு குறிக்கு முன்னிலை வழங்கபடுகிறது
(1 + 3) * 2; // = 8
// மெய் எண் அல்லாத மூன்றுபெறுமானங்கள் உள்ளன :
Infinity; // result of e.g. 1/0
-Infinity; // result of e.g. -1/0
NaN; // result of e.g. 0/0, இது எண் அல்ல என்பதை குறிக்கும்
NaN; // result of e.g. 0/0, இது எண் அல்ல என்பதை குறிக்கும்
// தர்க ரீதியில் ஆன கட்டமைப்பு காணப்படுகிறது .
true;
false;
// சரம் (string) ' அல்லது " குறியீட்டினால் உருவாக்கபடுகிறது
// சரம் (string) ' அல்லது " குறியீட்டினால் உருவாக்கபடுகிறது
'abc';
"Hello, world";
// ஒரு boolean பெறுமானத்தின் எதிர்மறை பெறுமானத்தை பெற ! குறியீடு பயன்படுத்தபடுகிறது
// ஒரு boolean பெறுமானத்தின் எதிர்மறை பெறுமானத்தை பெற ! குறியீடு பயன்படுத்தபடுகிறது
!true; // = false
!false; // = true
@@ -95,7 +91,7 @@ false;
1 !== 1; // = false
2 !== 1; // = true
// மேலும் சில ஒப்பீடுகள்
// மேலும் சில ஒப்பீடுகள்
1 < 10; // = true
1 > 10; // = false
2 <= 2; // = true
@@ -107,15 +103,15 @@ false;
// இரண்டு மாறிகளை/பெறுமானங்களை ஒப்பிட < and >
"a" < "b"; // = true
// இரண்டு பெறுமானங்கள் / மாறிகள் ஒரேவகையை சேர்ந்தவையா என பார்க்க
// இரண்டு பெறுமானங்கள் / மாறிகள் ஒரேவகையை சேர்ந்தவையா என பார்க்க
"5" == 5; // = true
null == undefined; // = true
// ...இல்லாவிடின் ===
"5" === 5; // = false
null === undefined; // = false
null === undefined; // = false
// ...கிழே உள்ள கூற்றுகள் எதிர்பாராத
// ...கிழே உள்ள கூற்றுகள் எதிர்பாராத
ிகள தரல ...
13 + !0; // 14
"13" + !0; // '13true'
@@ -127,11 +123,11 @@ null === undefined; // = false
//... ஒரு சரத்தை(string ) சொற்களாக பிரிக்க (substring) `substring
"Hello world".substring(0, 5); // = "Hello"
// `length` ஒரு சரத்தில்(string) உள்ள சொற்களின் எண்ணிக்கை அல்லது நீளத்தை(length)அறிய
// `length` ஒரு சரத்தில்(string) உள்ள சொற்களின் எண்ணிக்கை அல்லது நீளத்தை(length)அறிய
"Hello".length; // = 5
// `null` மற்றும் `undefined` இரு பெறுமானங்கள் உள்ளன .
null; // மதிப்பு அற்ற ஒரு பெறுமானத்தை குறிக்கும்
null; // மதிப்பு அற்ற ஒரு பெறுமானத்தை குறிக்கும்
undefined; // பெறுமானம் இன்னும் நிர்ணயிக்க படவில்லை என்பதை குறிக்கும் (
// `undefined` இருப்பினும் இதுவும் ஒரு பெறுமானமாக கருதபடுகிறது )
@@ -142,35 +138,35 @@ undefined; // பெறுமானம் இன்னும் நிர்ண
// 2. மாறிகள் (Variables),அணிகள் (Arrays) மற்றும் பொருட்கள் (Objects)
// மாறிகளை உருவாக்க `var ` என்னும் குறியீட்டு சொல் (keyword ) பயன்படுகிறது .
//உருவாக்கப்படும் மாறிகள் எந்த வகையை சார்ந்தன என்பதை JavaScript
//தானாகவே நிர்ணயிக்கும் . மாறிக்கு ஒரு பெறுமானத்தை வழங்க `=` பாவிக்க
//உருவாக்கப்படும் மாறிகள் எந்த வகையை சார்ந்தன என்பதை JavaScript
//தானாகவே நிர்ணயிக்கும் . மாறிக்கு ஒரு பெறுமானத்தை வழங்க `=` பாவிக்க
var someVar = 5;
// //நீங்கள் மாறிகளை நிறுவ 'var' குறியீட்டு சொல்லை பயன்படுத்தா விடினும்
// //நீங்கள் மாறிகளை நிறுவ 'var' குறியீட்டு சொல்லை பயன்படுத்தா விடினும்
//அது தவறில்லை ...
someOtherVar = 10;
// ...ஆனால் நீங்கள் நிறுவிய மாறி(variable) எல்லா உங்கள் ப்ரோக்ராம் இன் சகல இடங்களிலும்
//அணுக கூடியதாய் அமையும் , இல்லாவிடின் அது ஒரு குறிபிட்ட இடத்திற்கு மட்டும்
// ...ஆனால் நீங்கள் நிறுவிய மாறி(variable) எல்லா உங்கள் ப்ரோக்ராம் இன் சகல இடங்களிலும்
//அணுக கூடியதாய் அமையும் , இல்லாவிடின் அது ஒரு குறிபிட்ட இடத்திற்கு மட்டும்
//மட்டுபடுத்தபடும் .
//பெறுமானம் வழங்கபடாத மாறிகளுக்கு ,இயல்பாக/தானாக undefined என்ற பெறுமானம்
//வழங்கப்படும்
//பெறுமானம் வழங்கபடாத மாறிகளுக்கு ,இயல்பாக/தானாக undefined என்ற பெறுமானம்
//வழங்கப்படும்
var someThirdVar; // = undefined
// மாறிகளில் கணித செயல்பாடுகளை நடத்த சுருக்கெழுத்து முறைகள் காணப்படுகின்றன :
someVar += 5; // இது someVar = someVar + 5; ஐ ஒத்தது someVar இன் பெறுமானம் இப்போது 10
someVar *= 10; // someVar இன் பெறுமானம் இப்போது 100
//மிகவும் சுருக்கமான சுருகேழுத்து முறை கூட்டல் அல்லது கழித்தல் செயன்முறையை
//மேற்கொள்ள
//மிகவும் சுருக்கமான சுருகேழுத்து முறை கூட்டல் அல்லது கழித்தல் செயன்முறையை
//மேற்கொள்ள
someVar++; // someVar இன் பெறுமானம் இப்போது is 101
someVar--; // someVar இன் பெறுமானம் இப்போது 100
// அணிகள்(Arrays) எல்லாவகையான பெறுமானங்களையும் உள்ளடக்க கூடியது
// அணிகள்(Arrays) எல்லாவகையான பெறுமானங்களையும் உள்ளடக்க கூடியது
var myArray = ["Hello", 45, true];
// அணிகள்(Arrays) உறுப்பினர்கள் சதுர அடைப்புக்குறிக்குள் அதன் தான இலக்கத்தை கொண்டு
// அணிகள்(Arrays) உறுப்பினர்கள் சதுர அடைப்புக்குறிக்குள் அதன் தான இலக்கத்தை கொண்டு
//அணுகமுடியும் .
// அணிகளில் உள்ள உறுப்புகள் 0 இருந்து ஆரம்பமாகும் .
myArray[1]; // = 45
@@ -182,47 +178,47 @@ myArray.length; // = 4
// அணியில்(Array) ஒரு குறிப்பிட்ட இடத்தில உள்ள பெறுமானத்தை மாற்ற .
myArray[3] = "Hello";
// JavaScript's பொருள் (objects) அகராதியை ஒத்தன
// ஒழுங்கு படுத்த படாத சேகரிப்பு (collection) ஆகும் இதில் ஒரு சாவியும்(key)
// JavaScript's பொருள் (objects) அகராதியை ஒத்தன
// ஒழுங்கு படுத்த படாத சேகரிப்பு (collection) ஆகும் இதில் ஒரு சாவியும்(key)
//அதுக்குரிய பெறுமானமும்(value) காணப்படும் .
var myObj = {key1: "Hello", key2: "World"};
// விசைகள் சரங்களை, ஆனால் அவர்கள் சரியான என்றால் மேற்கோள் அவசியம் இல்லை
//சாவிகளை உ.ம் : "key" என நிறுவலாம் ஆனால் , மேற்கோள் ஆனது சாவி முன்பே நிறுவபட்டிருப்பின்
//அவசியம் இல்லை
// சாவிகளுக்குரிய பெறுமானங்கள் எந்த வகையாகவும் இருக்கலாம்
//அவசியம் இல்லை
// சாவிகளுக்குரிய பெறுமானங்கள் எந்த வகையாகவும் இருக்கலாம்
var myObj = {myKey: "myValue", "my other key": 4};
//பொருள் பண்புகளை சதுர அடைப்புக்குறிக்குள் அதன் சாவியின் பெயரை (key) கொண்டு
//பொருள் பண்புகளை சதுர அடைப்புக்குறிக்குள் அதன் சாவியின் பெயரை (key) கொண்டு
//அணுகமுடியும் ,
myObj["my other key"]; // = 4
// ... அல்லது புள்ளி குறியீட்டை பயன்படுத்தி ,சாவியின் (key is a valid identifier)
//பெயர் மூலம் அணுக முடியும்
//பெயர் மூலம் அணுக முடியும்
myObj.myKey; // = "myValue"
// பொருட்கள்(ஒப்ஜெக்ட்ஸ்) மாற்றபடகூடியான சாவிகளின் பெறுமதிகளை மாற்ற முடியும் அத்துடன் புதிய
//சாவிகளை(keys) இடவும் முடியும்
// பொருட்கள்(ஒப்ஜெக்ட்ஸ்) மாற்றபடகூடியான சாவிகளின் பெறுமதிகளை மாற்ற முடியும் அத்துடன் புதிய
//சாவிகளை(keys) இடவும் முடியும்
myObj.myThirdKey = true;
//பெறுமதி வரையறுக்கபடாத ஒரு சாவியினை அணுகும் போது
//பெறுமதி வரையறுக்கபடாத ஒரு சாவியினை அணுகும் போது
//அது வெளியிடும் பெறுமதி `undefined`.
myObj.myFourthKey; // = undefined
///////////////////////////////////
// 3. தர்க்கம் மற்றும் கட்டுப்பாட்டு கட்டமைப்பு
// கீழே காட்டப்பட்டுள்ள தொடரியல் ஜாவா வை ஒத்தது
// கீழே காட்டப்பட்டுள்ள தொடரியல் ஜாவா வை ஒத்தது
// The `if` ஒரு குறித்த தர்க்கம் சரியாயின்
//அல்லது என்ற வடிவமைப்பை
// The `if` ஒரு குறித்த தர்க்கம் சரியாயின்
//அல்லது என்ற வடிவமைப்பை
var count = 1;
if (count == 3){
// count இன் பெறுமானம் 3 சமமா என பார்க்கபடுகிறது
// count இன் பெறுமானம் 3 சமமா என பார்க்கபடுகிறது
} else if (count == 4){
// count இன் பெறுமானம் 4க்கு சமமா என பார்க்கபடுகிறது
// count இன் பெறுமானம் 4க்கு சமமா என பார்க்கபடுகிறது
} else {
// count ஆனது 3 அல்ல 4 அல்ல எனின்
// count ஆனது 3 அல்ல 4 அல்ல எனின்
}
// ஒரு குறிப்பிட்ட ஒப்பீடு உண்மையாக இருக்கும் வரை `while`.
@@ -230,40 +226,40 @@ while (true){
// இந்த இருக்கும் கூற்றுகள் முடிவிலி தடவை மறுபடி செயற்படுத்தப்படும் !
}
// while போல் அல்லாது do-while ,அவை ஒரு தடவையேனும் அதனுள் உள்ள கூற்றுகள் செயற்படுத்தபடும்
// while போல் அல்லாது do-while ,அவை ஒரு தடவையேனும் அதனுள் உள்ள கூற்றுகள் செயற்படுத்தபடும்
var input;
do {
input = getInput();
} while (!isValid(input))
// for (loop /சுற்று ) C , ஜாவாவை ஒத்தது
// for (loop /சுற்று ) C , ஜாவாவை ஒத்தது
//மாறிக்கு பெறுமானத்தை வழங்கல் , மாறியானது தர்க்கத்தை பூர்த்தி செய்கிறதா என பார்த்தல் ,
//சுற்றுக்குள் இருக்கும் கூற்றை செயற்படுதல்
//சுற்றுக்குள் இருக்கும் கூற்றை செயற்படுதல்
for (var i = 0; i < 5; i++){
// இந்த சுற்று 5 தடவைகள் தொடர்ந்து செயற்படுத்தபடும்
// இந்த சுற்று 5 தடவைகள் தொடர்ந்து செயற்படுத்தபடும்
}
//for /In சுற்றுகள் prototype சங்கிலியில் உள்ள சகல காரணிகள் ஊடகவும் செல்லும்
//for /In சுற்றுகள் prototype சங்கிலியில் உள்ள சகல காரணிகள் ஊடகவும் செல்லும்
var description = "";
var person = {fname:"Paul", lname:"Ken", age:18};
var person = {fname:"Paul", lname:"Ken", age:18};
for (var x in person){
description += person[x] + " ";
}
//ஒரு பொருளில் (Object) இடப்பட்ட பண்புகளை (properties) கருத்தில் கொள்ளும் போது
//குறிப்பிட்ட பண்புகளை அந்த Object கொண்டுள்ளதா என பார்க்க
//குறிப்பிட்ட பண்புகளை அந்த Object கொண்டுள்ளதா என பார்க்க
var description = "";
var person = {fname:"Paul", lname:"Ken", age:18};
var person = {fname:"Paul", lname:"Ken", age:18};
for (var x in person){
if (person.hasOwnProperty(x)){
description += person[x] + " ";
}
}
//for /in ஆனது அணியில் உள்ள பண்புகள் ஒழுங்குபடுத்தப்பட்டவிதம் முக்கியம்
//ஆயின் பாவிப்பதை தவிர்க்கவும் ஏனெனில் அது சரியான ஒழுங்கில்
//வெளியீட்டை தரும் என்பது ஐயம் ஆகும்
//for /in ஆனது அணியில் உள்ள பண்புகள் ஒழுங்குபடுத்தப்பட்டவிதம் முக்கியம்
//ஆயின் பாவிப்பதை தவிர்க்கவும் ஏனெனில் அது சரியான ஒழுங்கில்
//வெளியீட்டை தரும் என்பது ஐயம் ஆகும்
// && is logical and, || is logical or
if (house.size == "big" && house.colour == "blue"){
@@ -298,16 +294,16 @@ switch (grade) {
///////////////////////////////////
// 4. Functions, Scope and Closures
// JavaScript இல் functions நிறுவ `function` keyword.பயன்படும்
// JavaScript இல் functions நிறுவ `function` keyword.பயன்படும்
function myFunction(thing){
return thing.toUpperCase();
}
myFunction("foo"); // = "FOO"
//ஒரு பெறுமானத்தை return செய்ய வேண்டும் எனின் இரண்டும் ஒரே வரியில்
//இருக்க வேண்டும் இல்லாவிடின் return ஆனது `undefined ` return செய்யும்
//காற் புள்ளி தானாகவே இடப்படும் , நீங்கள் Allman style உபயோகிக்கும் போது
//அவதானமாக இருக்கவும்
//ஒரு பெறுமானத்தை return செய்ய வேண்டும் எனின் இரண்டும் ஒரே வரியில்
//இருக்க வேண்டும் இல்லாவிடின் return ஆனது `undefined ` return செய்யும்
//காற் புள்ளி தானாகவே இடப்படும் , நீங்கள் Allman style உபயோகிக்கும் போது
//அவதானமாக இருக்கவும்
function myFunction()
{
return // <- semicolon automatically inserted here
@@ -317,20 +313,20 @@ function myFunction()
}
myFunction(); // = undefined
// JavaScript functions ஆனது first class objects ஆகும் ,எனவே அவற்றை மாறிகளுக்கு
//assign செய்ய முடியும் அதுமட்டும் அல்லது functions களில் arguments ஆக அனுப்பமுடியும்
// JavaScript functions ஆனது first class objects ஆகும் ,எனவே அவற்றை மாறிகளுக்கு
//assign செய்ய முடியும் அதுமட்டும் அல்லது functions களில் arguments ஆக அனுப்பமுடியும்
// உதாரணமாக ஒரு event handler:
function myFunction(){
//இந்த code 5 செக்கன்களில் செயற்படுத்தப்படும்
//இந்த code 5 செக்கன்களில் செயற்படுத்தப்படும்
}
setTimeout(myFunction, 5000);
// Note: setTimeout ஆனது ஜாவஸ்க்ரிப்ட் சேர்ந்தது அன்று , ஆனால் அந்த வசதி
//உலாவிகளிலும் ,Node .js காணப்படுகிறது
// Note: setTimeout ஆனது ஜாவஸ்க்ரிப்ட் சேர்ந்தது அன்று , ஆனால் அந்த வசதி
//உலாவிகளிலும் ,Node .js காணப்படுகிறது
// Function objects கட்டாயம் பெயரிடப்பட வீண்டும் என்று அவசியம் இல்லை
// அவை anonymous(பெயரிடப்படாமல்) உருவாக்கபடலாம்
// Function objects கட்டாயம் பெயரிடப்பட வீண்டும் என்று அவசியம் இல்லை
// அவை anonymous(பெயரிடப்படாமல்) உருவாக்கபடலாம்
setTimeout(function(){
//இந்த code 5 செக்கன்களில் செயற்படுத்தப்படும்
//இந்த code 5 செக்கன்களில் செயற்படுத்தப்படும்
}, 5000);
// JavaScript function ஒரு குறிப்பிட்ட scope(எல்லை) கொண்டுள்ளது ;
@@ -339,42 +335,42 @@ setTimeout(function(){
if (true){
var i = 5;
}
i; // = 5 - //இது undefined அல்ல
i; // = 5 - //இது undefined அல்ல
// இதன் காரணமாக anonymous functions உடனடியாக செயற்படுத்தபடுகின்றன
// இதன் காரணமாக anonymous functions உடனடியாக செயற்படுத்தபடுகின்றன
//இதன் மூலம் தற்காலிக மாறிகள்(variable) குளோபல் scope
//இற்கு மாறுவதை தவிர்க்கலாம் .
(function(){
var temporary = 5;
//நாங்கள் ஒரு மாறியை எங்கிருந்தும் அணுக (access) அதை "global object"
//ஒன்றுக்கு வழங்க வேண்டும் உலாவியில் அது எப்போதும் `window` ஆகும் .
//உலாவி அல்லாத சூழலில் (Node.js) வேறு பெயருடன் இருக்கும்
//நாங்கள் ஒரு மாறியை எங்கிருந்தும் அணுக (access) அதை "global object"
//ஒன்றுக்கு வழங்க வேண்டும் உலாவியில் அது எப்போதும் `window` ஆகும் .
//உலாவி அல்லாத சூழலில் (Node.js) வேறு பெயருடன் இருக்கும்
window.permanent = 10;
})();
temporary; // raises ReferenceError
permanent; // = 10
//JavaScript's மிகவும் சக்தி வாய்ந்த ஒரு வசதி closures ஆகும்
//JavaScript's மிகவும் சக்தி வாய்ந்த ஒரு வசதி closures ஆகும்
//ஒரு function இன்னொரு function உள் உருவாக்கபடின்
//அது உருவாகப்பட்ட function இன் மாறிகளை அணுக முடியும்
//அது உருவாகப்பட்ட function இன் மாறிகளை அணுக முடியும்
function sayHelloInFiveSeconds(name){
var prompt = "Hello, " + name + "!";
// Inner functions ஆனது local scope இல் காணப்படும்
//அது `var ` என்ற குறியீட்டு சொல்லால் நிறுவப்படும்
// Inner functions ஆனது local scope இல் காணப்படும்
//அது `var ` என்ற குறியீட்டு சொல்லால் நிறுவப்படும்
function inner(){
alert(prompt);
}
setTimeout(inner, 5000);
//setTimeout ஆனது background இல் இயங்கும் , எனவே sayHelloInFiveSeconds function,
//செயற்பாடு முடிவடைய ,setTimeout ஆனது inner function call செய்யும்.
//செயற்பாடு முடிவடைய ,setTimeout ஆனது inner function call செய்யும்.
}
sayHelloInFiveSeconds("Adam"); // //இது ஒரு popup ஐ ஐந்து செக்கன்களில் காட்டும்
sayHelloInFiveSeconds("Adam"); // //இது ஒரு popup ஐ ஐந்து செக்கன்களில் காட்டும்
///////////////////////////////////
// 5. Objects; Constructors and Prototypes பற்றி மேலும்
// 5. Objects; Constructors and Prototypes பற்றி மேலும்
// Objects functions ஐ கொண்டிருக்கலாம்
// Objects functions ஐ கொண்டிருக்கலாம்
var myObj = {
myFunc: function(){
return "Hello world!";
@@ -382,8 +378,8 @@ var myObj = {
};
myObj.myFunc(); // = "Hello world!"
//functions ஆனது objects உடன் இணைக்கப்பட்டுள போது அவை object ஐ அணுக முடியும்
//அவை this என்ற குறியீட்டு சொல்லை பயன்படுத்தி இணைக்கபடுகின்றன
//functions ஆனது objects உடன் இணைக்கப்பட்டுள போது அவை object ஐ அணுக முடியும்
//அவை this என்ற குறியீட்டு சொல்லை பயன்படுத்தி இணைக்கபடுகின்றன
myObj = {
myString: "Hello world!",
myFunc: function(){
@@ -392,20 +388,20 @@ myObj = {
};
myObj.myFunc(); // = "Hello world!"
//எங்கள் function ஆனது தொழிற் படாமல் போகலாம் அது context(அமைப்பு ) of the object call செய்யபடவிடின்
//எங்கள் function ஆனது தொழிற் படாமல் போகலாம் அது context(அமைப்பு ) of the object call செய்யபடவிடின்
var myFunc = myObj.myFunc;
myFunc(); // = undefined
//function ஆனது ஒரு object உக்கு assign செய்யலாம் பிறகு அதை நாம் அணுகமுடியும்
//`this` மூலம்
//function ஆனது ஒரு object உக்கு assign செய்யலாம் பிறகு அதை நாம் அணுகமுடியும்
//`this` மூலம்
var myOtherFunc = function(){
return this.myString.toUpperCase();
}
myObj.myOtherFunc = myOtherFunc;
myObj.myOtherFunc(); // = "HELLO WORLD!"
//ஒரு function ஒரு அமைப்பை நாம் உருவாக்க முடியும்
//ஒரு function ஒரு அமைப்பை நாம் உருவாக்க முடியும்
//அதை நாம் `call` அல்லது `apply` மூலம் செயல்படுத்த முடியும்
var anotherFunc = function(s){
@@ -413,34 +409,34 @@ var anotherFunc = function(s){
}
anotherFunc.call(myObj, " And Hello Moon!"); // = "Hello World! And Hello Moon!"
//apply செயற்பாட்டளவில் ஒத்தன ,ஆனால் அது array (அணி) argument
//apply செயற்பாட்டளவில் ஒத்தன ,ஆனால் அது array (அணி) argument
//ஆக எடுக்கிறது.
anotherFunc.apply(myObj, [" And Hello Sun!"]); // = "Hello World! And Hello Sun!"
//இது தொடர்ச்சியான arguments ஐ நாம் function ஒன்றுக்குள் pass பண்ண
//வேண்டும் எனில் மிகவும் உபயோகமானது
//இது தொடர்ச்சியான arguments ஐ நாம் function ஒன்றுக்குள் pass பண்ண
//வேண்டும் எனில் மிகவும் உபயோகமானது
Math.min(42, 6, 27); // = 6
Math.min([42, 6, 27]); // = NaN (uh-oh!)
Math.min.apply(Math, [42, 6, 27]); // = 6
//ஆனால் `call ` ,`apply ` இரண்டும் தற்காலிகமானவை
//அவற்றை நிரந்தரமாக்க bind function ஐ பயன்படுத்தவும்
//ஆனால் `call ` ,`apply ` இரண்டும் தற்காலிகமானவை
//அவற்றை நிரந்தரமாக்க bind function ஐ பயன்படுத்தவும்
var boundFunc = anotherFunc.bind(myObj);
boundFunc(" And Hello Saturn!"); // = "Hello World! And Hello Saturn!"
//`bind ` ஐ உபயோகித்து ஒரு function ஐ பகுதியாக apply செய்ய முடியும்
//`bind ` ஐ உபயோகித்து ஒரு function ஐ பகுதியாக apply செய்ய முடியும்
var product = function(a, b){ return a * b; }
var doubler = product.bind(this, 2);
doubler(8); // = 16
//ஒரு function ஐ நாம் new என்ற குறியீட்டு சொல்லை பயன்படுத்தி
//அழைக்கும் போது புதிய object உருவாக்கப்படும் .இவ்வாறான functions
//constructors என அழைக்கப்படும்
//ஒரு function ஐ நாம் new என்ற குறியீட்டு சொல்லை பயன்படுத்தி
//அழைக்கும் போது புதிய object உருவாக்கப்படும் .இவ்வாறான functions
//constructors என அழைக்கப்படும்
var MyConstructor = function(){
this.myNumber = 5;
@@ -448,15 +444,15 @@ var MyConstructor = function(){
myNewObj = new MyConstructor(); // = {myNumber: 5}
myNewObj.myNumber; // = 5
//ஒவ்வொரு JavaScript object உம் ஒரு `prototype ` கொண்டுள்ளது
//நீங்கள் object ஒன்றின் ஒரு property ஐ அணுகும் போது
//அந்த property இல்லாவிடின் interpreter ஆனது
//அதன் prototype உள்ளதா என பார்க்கும்
//ஒவ்வொரு JavaScript object உம் ஒரு `prototype ` கொண்டுள்ளது
//நீங்கள் object ஒன்றின் ஒரு property ஐ அணுகும் போது
//அந்த property இல்லாவிடின் interpreter ஆனது
//அதன் prototype உள்ளதா என பார்க்கும்
//JS இன் சில செயலாக்கங்கள் ஒரு object இன் protoype ஐ
//JS இன் சில செயலாக்கங்கள் ஒரு object இன் protoype ஐ
//இலகுவாக `__proto__` மூலம் access செய்ய முடியும் .
//இது prototype பாவணை யை இலகுவாக்கினாலும்
//இது சரியான ஒரு முறை அல்ல
//இது prototype பாவணை யை இலகுவாக்கினாலும்
//இது சரியான ஒரு முறை அல்ல
var myObj = {
myString: "Hello world!"
};
@@ -473,21 +469,21 @@ myObj.meaningOfLife; // = 42
// This works for functions, too.
myObj.myFunc(); // = "hello world!"
//உங்கள் property prototype இல் இல்லது இருப்பின் , protype இன்
//prototype search செய்யப்படும்
//உங்கள் property prototype இல் இல்லது இருப்பின் , protype இன்
//prototype search செய்யப்படும்
myPrototype.__proto__ = {
myBoolean: true
};
myObj.myBoolean; // = true
//ஒவ்வொரு object உம் அதன் protype க்கும் reference (மேற்கோள் ) ஒன்றை வைத்திருக்கும்
//ஒவ்வொரு object உம் அதன் protype க்கும் reference (மேற்கோள் ) ஒன்றை வைத்திருக்கும்
//நாம் ஒரு protype இணை மாற்றினால் அதன் மாற்றங்கள் எல்லா இடத்திலும் (program இல் )
//பிரதிபலிக்கும்
//பிரதிபலிக்கும்
myPrototype.meaningOfLife = 43;
myObj.meaningOfLife; // = 43
//நாம் முன்பு கூறியது போல் `__proto__` பயன்படுத்துவது சரியான முறை அல்ல
//நாம் முன்பு கூறியது போல் `__proto__` பயன்படுத்துவது சரியான முறை அல்ல
//எனவே நாம் ஒரு protype ஐ object இல் உருவாக்க இரண்டு வழிமுறைகள்
//உள்ளன
@@ -550,7 +546,7 @@ String.prototype.firstCharacter = function(){
//இது பழைய சூழல்களில் உபயோகிகப்படும்.
//நாங்கள் முன்பு கூறி இருந்தோம் Object.create சில இடங்களில் இந்த முறை இன்னும்
//நாங்கள் முன்பு கூறி இருந்தோம் Object.create சில இடங்களில் இந்த முறை இன்னும்
//அறிமுகம் ஆகவில்லை என்று ஆனால் இதை polyfill ஐ பயன்படுத்தி உருவாக்க
//முடியும்