summaryrefslogtreecommitdiffhomepage
path: root/fa-ir
diff options
context:
space:
mode:
Diffstat (limited to 'fa-ir')
-rw-r--r--fa-ir/css-fa.html.markdown5
-rw-r--r--fa-ir/java-fa.html.markdown1
-rw-r--r--fa-ir/javascript-fa.html.markdown82
3 files changed, 85 insertions, 3 deletions
diff --git a/fa-ir/css-fa.html.markdown b/fa-ir/css-fa.html.markdown
index 93af9132..56a43967 100644
--- a/fa-ir/css-fa.html.markdown
+++ b/fa-ir/css-fa.html.markdown
@@ -52,6 +52,7 @@ selector { property: value; /* more properties...*/ }
```html
<div class='some-class class2' id='someId' attr='value' otherAttr='en-us foo bar' />
```
+
<p dir='rtl'>شما میتوانید با استفاده از نام کلاس آنرا انتخاب کنید</p>
@@ -150,6 +151,7 @@ div.some-parent.class-name {}
```css
.i-am-any-before ~ .this-element {}
```
+
<p dir='rtl'>در زیر چند نمونه از شبه کلاسها را معرفی میکنیم که به شما اجازه میدهد عناصر را بر اساس رفتار آنها در صفحه انتخاب کنید.</p>
<p dir='rtl'>برای مثال زمانی که اشاره گر ماوس روی عنصری بر روی صفحه قرار دارد.</p>
@@ -262,7 +264,6 @@ p {}
/*E*/
p { property: value !important; }
-
```
<p dir='rtl'>و همچنین به کد زیر:</p>
@@ -270,8 +271,8 @@ p { property: value !important; }
```html
<p style='/*F*/ property:value;' class='class1 class2' attr='value'>
</p>
-
```
+
‍‍
<p dir='rtl'>حق تقدم یا اولویت برای مثال بالا به این صورت است:</p>
<p dir='rtl'>توجه داشته باشید که حق تقدم برای هر کدام از ویژگیها است نه برای کل مجموعه.</p>
diff --git a/fa-ir/java-fa.html.markdown b/fa-ir/java-fa.html.markdown
index cb965fc4..a834afcd 100644
--- a/fa-ir/java-fa.html.markdown
+++ b/fa-ir/java-fa.html.markdown
@@ -854,7 +854,6 @@ public class EnumTest {
// Enum types are much more powerful than we show above.
// The enum body can include methods and other fields.
// You can see more at https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
-
```
## مطالب بیشتر
diff --git a/fa-ir/javascript-fa.html.markdown b/fa-ir/javascript-fa.html.markdown
index d4d3a657..16b18a7c 100644
--- a/fa-ir/javascript-fa.html.markdown
+++ b/fa-ir/javascript-fa.html.markdown
@@ -34,21 +34,26 @@ lang: fa-ir
/* and multiline comments start with slash-star
and end with star-slash */
```
+
<p dir='rtl'>
گزاره ها را میتوانید با نقطه ویرگول پایان دهید ;
</p>
+
```js
doStuff();
```
+
<p dir='rtl'>
ولی لزومی به این کار نیست. نقطه ویرگول به صورت خودکار در نظر گرفته میشوند.
</p>
<p dir='rtl'>
وقتی که خط جدیدی شروع میشود. مگر در موارد خاص.
</p>
+
```js
doStuff()
```
+
<p dir='rtl'>برای اینگه درگیر آن موارد خاص نشویم، در اینجا از اون ها </p>
<p dir='rtl'>صرف نظر میکنیم.</p>
@@ -57,97 +62,133 @@ doStuff()
<p dir='rtl'>جاوااسکریپت فقط یک نوع عدد دارد و آن عدد اعشاری 64 بیتی IEEE 754 است.</p>
<p dir='rtl'>نترسید! و نگران اعداد صحیح نباشید! این اعداد اعشاری دارای 54 بیت مانتیس هستند که قابلیت ذخیره ی </p>
<p dir='rtl'>دقیق اعداد صحیح تا مقدار تقریبی 9x10¹⁵ را دارند.</p>
+
```js
3; // = 3
1.5; // = 1.5
```
+
<p dir='rtl'>
تمامی عملگر های محاسباتی آن طوری که انتظارش را دارید عمل خواهند کرد.
</p>
+
```js
1 + 1; // = 2
8 - 1; // = 7
10 * 2; // = 20
35 / 5; // = 7
```
+
<p dir='rtl'>و این حتی شامل تقسیم هم میشود.</p>
+
```js
5 / 2; // = 2.5
```
+
<p dir='rtl'>عملگر های بیتی هم به همین شکل. وقتی از یک عملگر بیتی استفاده میکنید، عدد اعشاری شما</p>
<p dir='rtl'>به عدد صحیح علامت دار *تا 32 بیت* تبدیل میشود.</p>
+
```js
1 << 2; // = 4
```
+
<p dir='rtl'>عملیات داخل پرانتز تقدم بالاتری دارند.</p>
+
```js
(1 + 3) * 2; // = 8
```
+
<p dir='rtl'>سه مقدار خاص وجود دارند که در واقع مقادیر عددی نیستند:</p>
+
```js
Infinity; // result of e.g. 1/0
-Infinity; // result of e.g. -1/0
NaN; // result of e.g. 0/0
```
+
<p dir='rtl'>مقادیر بولی هم تعریف شده هستند:</p>
+
```js
true;
false;
```
+
<p dir='rtl'>رشته ها با آپستروف و یا گیومه تعریف میشوند.</p>
+
```js
'abc';
"Hello, world";
```
+
<p dir='rtl'>و منفی کردن شرط با علامت تعجب</p>
+
```js
!true; // = false
!false; // = true
```
+
<p dir='rtl'>تساوی دو مقدار با ==</p>
+
```js
1 == 1; // = true
2 == 1; // = false
```
+
<p dir='rtl'>و عدم تساوی با !=</p>
+
```js
1 != 1; // = false
2 != 1; // = true
```
+
<p dir='rtl'>و سایر عمیلات های مقایسه</p>
+
```js
1 < 10; // = true
1 > 10; // = false
2 <= 2; // = true
2 >= 2; // = true
```
+
<p dir='rtl'>رشته ها با علامت جمع به یکدیگر متصل میشوند</p>
+
```js
"Hello " + "world!"; // = "Hello world!"
```
+
<p dir='rtl'>و با علامت برگتر و یا کوچکتر با یکدیگر مقایسه میشوند.</p>
+
```js
"a" < "b"; // = true
```
+
<p dir='rtl'>نوع متغیر برای عملیات مقایسه تطبیق داده میشود</p>
+
```js
"5" == 5; // = true
```
+
<p dir='rtl'>مگر اینکه از سه مساوی استفاده شود!</p>
+
```js
"5" === 5; // = false
```
+
<p dir='rtl'>با استفاده از charAt میتوانید به کارکتر های یک رشته دسترسی پیدا کنید.</p>
+
```js
"This is a string".charAt(0);
```
+
<p dir='rtl'>از null برای نشان دادن عمدی مقدار هیج استفاده میشود.</p>
<p dir='rtl'>و از undefined برای نشان دادن اینکه در حال حاظر مقدار موجود نمی باشد، هرچند خود undefined یک مقدار محسوب میشود.</p>
+
```js
null; // used to indicate a deliberate non-value
undefined; // used to indicate a value is not currently present (although undefined
// is actually a value itself)
```
+
<p dir='rtl'>false, null, undefined, NaN, 0 و "" مقدار نادرست و هر چیز دیگر مقدار درست طلقی میشوند.</p>
<p dir='rtl'>توجه داشته باشید که 0 نادرست و "0" درست طلقی میشوند حتی در عبارت 0=="0".</p>
@@ -156,11 +197,13 @@ undefined; // used to indicate a value is not currently present (although undefi
<p dir='rtl'>متغیر ها با کلید واژه var تعریف میشوند. اشیا در جاوااسکریپت دارای نوع پویا هستند، </p>
<p dir='rtl'>بدین شکل که برای تعریف نیازی به مشخص کردن نوع متعیر نیست. </p>
<p dir='rtl'>برای مقدار دهی از علامت مساوی استفاده میشود. </p>
+
```js
var someVar = 5;
```
<p dir='rtl'>اگر کلید واژه var را قرار ندهید، هیچ خطایی دریافت نخواهید کرد... </p>
+
```js
someOtherVar = 10;
```
@@ -168,34 +211,40 @@ someOtherVar = 10;
<p dir='rtl'>در عوض متغیر شما در گستره ی کل برنامه تعریف شده خواهد بود. </p>
<p dir='rtl'>متغیر هایی که تعریف شده ولی مقدار دهی نشوند، دارای مقدار undefined خواهند بود. </p>
+
```js
var someThirdVar; // = undefined
```
<p dir='rtl'>برای اعمال عملگر های محاسباتی، میانبر هایی وجود دارند: </p>
+
```js
someVar += 5; // equivalent to someVar = someVar + 5; someVar is 10 now
someVar *= 10; // now someVar is 100
```
<p dir='rtl'>حتی از این هم کوتاهتر برای اضافه یا کم کردن یک عدد با مقدار یک. </p>
+
```js
someVar++; // now someVar is 101
someVar--; // back to 100
```
<p dir='rtl'>آرایه ها در واقع لیستی مرتب شده از مقادیر مختلف از هر نوعی هستند. </p>
+
```js
var myArray = ["Hello", 45, true];
```
<p dir='rtl'>به اعضای یک آرایه میتوان از طریق قرار دادن کروشه در جلوی نام آن دسترسی پیدا کرد. </p>
<p dir='rtl'>نمایه ی آرایه از صفر شروع میشود. </p>
+
```js
myArray[1]; // = 45
```
<p dir='rtl'>آرایه ها ناپایدار و دارای طول قابل تغییر هستند </p>
+
```js
myArray.push("World");
myArray.length; // = 4
@@ -203,31 +252,37 @@ myArray.length; // = 4
<p dir='rtl'>در جاوااسکریپت، اشیاء چیزی شبیه دیکشنری و یا نقشه در زبان های دیگر هستند: </p>
<p dir='rtl'>یک مجموعه ی نامرتب از جفت های کلید-مقدار. </p>
+
```js
var myObj = {key1: "Hello", key2: "World"};
```
<p dir='rtl'>کلید ها از نوع رشته هستند ولی در صورتی که مقدار معتبری برای اسم گزاری باشند نیازی به آوردن آنها درون گیومه نیست. </p>
+
```js
var myObj = {myKey: "myValue", "my other key": 4};
```
<p dir='rtl'>اعضای یک شئ را نیز میتوانید با استفاده از کروشه در مقابل نام آنها استخراج کنید. </p>
+
```js
myObj["my other key"]; // = 4
```
<p dir='rtl'>...و یا از طریق نقطه در صورتی که اسم عضو مورد نظر اسم معتبری برای اسم گزاری باشد.</p>
+
```js
myObj.myKey; // = "myValue"
```
<p dir='rtl'>اشیاء ناپایدار و قابل اضافه کردن عضو جدید هستند.</p>
+
```js
myObj.myThirdKey = true;
```
<p dir='rtl'>اگر سعی کنید عضوی را که وجود ندارد استخراج کنید، مقدار undefined را دریافت خواهید کرد. </p>
+
```js
myObj.myFourthKey; // = undefined
```
@@ -235,6 +290,7 @@ myObj.myFourthKey; // = undefined
<h2 dir='rtl'>3. منطق و ساختار کنترل</h2>
<p dir='rtl'>ساختار if به شکلی که انتظارش را دارید کار میکند.</p>
+
```js
var count = 1;
if (count == 3){
@@ -247,6 +303,7 @@ if (count == 3){
```
<p dir='rtl'>و همینطور حلقه while</p>
+
```js
while (true) {
// An infinite loop!
@@ -254,6 +311,7 @@ while (true) {
```
<p dir='rtl'>حلقه do-while شبیه while است با این تفاوت که حداقل یکبار اجرا میشود.</p>
+
```js
var input
do {
@@ -263,6 +321,7 @@ do {
<p dir='rtl'>حلقه for همانند زبان C و جاوا کار می کند.</p>
<p dir='rtl'>مقدار دهی اولیه; شرط ادامه; چرخش حلقه</p>
+
```js
for (var i = 0; i < 5; i++){
// will run 5 times
@@ -270,6 +329,7 @@ for (var i = 0; i < 5; i++){
```
<p dir='rtl'>عملگر && و || به ترتیب "و" و "یا" ی منطقی هستند.</p>
+
```js
if (house.size == "big" && house.colour == "blue"){
house.contains = "bear";
@@ -280,6 +340,7 @@ if (colour == "red" || colour == "blue"){
```
<p dir='rtl'>از || همچنین میتوان برای تعیین مقدار پیشفرض استفاده کرد.</p>
+
```js
var name = otherName || "default";
```
@@ -287,6 +348,7 @@ var name = otherName || "default";
<h2 dir='rtl'>4. توابع و مفاهیم گستره و بستار</h2>
<p dir='rtl'>توابع در جاوااسکریپت با استفاده از کلیدواژه ی function تعریف میشوند.</p>
+
```js
function myFunction(thing){
return thing.toUpperCase();
@@ -297,6 +359,7 @@ myFunction("foo"); // = "FOO"
<p dir='rtl'>توابع در جاوااسکریپت نوعی شئ پایه محسوب میشوند، بنابر این می توانید آنها را به اشیاء مختلف</p>
<p dir='rtl'>اضافه کنید و یا به عنوان پارامتر به توابع دیگر ارسال کنید.</p>
<p dir='rtl'>- برای مثال وقتی که با یک رویداد کار میکنید.</p>
+
```js
function myFunction(){
// this code will be called in 5 seconds' time
@@ -309,6 +372,7 @@ setTimeout(myFunction, 5000);
<p dir='rtl'>توابع نیازی به داشتن اسم ندارند. برای مثال وقتی تابعی را به تابعی دیگر ارسال میکنید</p>
<p dir='rtl'>میتوانید آنرا به صورت بینام تعریف کنید.</p>
+
```js
setTimeout(function(){
// this code will be called in 5 seconds' time
@@ -317,6 +381,7 @@ setTimeout(function(){
<p dir='rtl'>توابع دارای محدوده ی متغیر های خود هستند.</p>
<p dir='rtl'>بر خلاف دیگر ساختار ها - مانند if</p>
+
```js
if (true){
var i = 5;
@@ -326,6 +391,7 @@ i; // = 5 - not undefined as you'd expect in a block-scoped language
<p dir='rtl'>به همین دلیل الگوی خاصی به نام "تابعی که بلافاصله صدا زده میشود" پدید آمده </p>
<p dir='rtl'>تا از اضافه شدن متغیر های قسمتی از برنامه به گستره ی کلی برنامه جلوگیری شود.</p>
+
```js
(function(){
var temporary = 5;
@@ -341,6 +407,7 @@ permanent; // = 10
<p dir='rtl'>یکی از برترین ویژگی های جاوااسکریپت مفهومی با نام بستار است</p>
<p dir='rtl'>بدین شکل که اگر تابعی درون تابع دیگری تعریف شود، تابع درونی به تمام متغیر های تابع خارجی دسترسی</p>
<p dir='rtl'>خواهد داشت، حتی بعد از اینکه تابع خارجی به اتمام رسیده باشد.</p>
+
```js
function sayHelloInFiveSeconds(name){
var prompt = "Hello, " + name + "!";
@@ -359,6 +426,7 @@ sayHelloInFiveSeconds("Adam"); // will open a popup with "Hello, Adam!" in 5s
<h2 dir='rtl'>5. دیگر اشیاء، سازنده ها و پیش‌نمونه ها</h2>
<p dir='rtl'>اشیاء میتوانند تابع داشته باشند.</p>
+
```js
var myObj = {
myFunc: function(){
@@ -370,6 +438,7 @@ myObj.myFunc(); // = "Hello world!"
<p dir='rtl'>وقتی تابع یک شی صدا زده می شود، تابع میتواند به سایر مقادیر درون آن شی </p>
<p dir='rtl'>از طریق کلید واژه ی this دسترسی داشته باشد.</p>
+
```js
myObj = {
myString: "Hello world!",
@@ -384,6 +453,7 @@ myObj.myFunc(); // = "Hello world!"
<p dir='rtl'>اینکه مقدار this چه باشد بستگی به این دارد که تابع چگونه صدا زده شود</p>
<p dir='rtl'>نه اینکه تابع کجا تعریف شده است.</p>
<p dir='rtl'>بنابر این تابع بالا اگر بدین شکل صدا زده شود کار نخواهد کرد</p>
+
```js
var myFunc = myObj.myFunc;
myFunc(); // = undefined
@@ -392,6 +462,7 @@ myFunc(); // = undefined
<p dir='rtl'>به همین شکل، تابعی که در جای دیگر تعریف شده را میتوانید به یک شی الحاق کنید</p>
<p dir='rtl'>و بدین ترتیب تابع میتواند به مقادیر درون شی از طریق this دسترسی پیدا کند.</p>
+
```js
var myOtherFunc = function(){
return this.myString.toUpperCase();
@@ -403,6 +474,7 @@ myObj.myOtherFunc(); // = "HELLO WORLD!"
<p dir='rtl'>اگر تابعی با کلید new صدا زده شوند، شی جدیدی ایجاد شده و تابع در گستره ی آن صدا زده میشود.</p>
<p dir='rtl'>توابعی که بدین شکل صدا زده شوند در واقع نقش سازنده را ایفا می کنند.</p>
+
```js
var MyConstructor = function(){
this.myNumber = 5;
@@ -420,6 +492,7 @@ myNewObj.myNumber; // = 5
<p dir='rtl'>طریق عضو جادویی __proto__ میدهند.</p>
<p dir='rtl'>هرچند این به شناخت پیش نمونه ها کمک میکند ولی در حیطه ی جاوااسکریپت استاندارد قرار نمیگیرد.</p>
<p dir='rtl'>در ادامه شکل استاندارد پیش نمونه ها مورد بررسی قرار میگیرند.</p>
+
```js
var myObj = {
myString: "Hello world!",
@@ -435,12 +508,14 @@ myObj.meaningOfLife; // = 42
```
<p dir='rtl'>این موضوع در مورد توابع نیز صدق میکند.</p>
+
```js
myObj.myFunc(); // = "hello world!"
```
<p dir='rtl'>اگر عضو مورد نظر در پیش نمونه ی شی یافت نشود، پیش نمونه ی پیش نمونه جستجو شده و الی آخر</p>
+
```js
myPrototype.__proto__ = {
myBoolean: true
@@ -451,6 +526,7 @@ myObj.myBoolean; // = true
<p dir='rtl'>توجه داشته باشید که پیش نمونه ها کپی نمی شوند و هر شی جدید به پیش نمونه موجود اشاره میکند</p>
<p dir='rtl'>بدین ترتیب اگر تابعی به پیش نمونه اضافه شود تمامی اشیاء میتوانند به آن دسترسی پیدا کنند.</p>
+
```js
myPrototype.meaningOfLife = 43;
myObj.meaningOfLife; // = 43
@@ -460,6 +536,7 @@ myObj.meaningOfLife; // = 43
<p dir='rtl'>ولی دو راه برای ارائه پیش نمونه برای اشیاء جدید وجود دارد.</p>
<p dir='rtl'>اولی وقتیست که از تابع Object.create استفاده میشود - که اخیرا به زبان اضافه شده است و بنابراین بر روی همه ی پیاده سازی های آن وجود ندارد.</p>
+
```js
var myObj = Object.create(myPrototype);
myObj.meaningOfLife; // = 43
@@ -469,6 +546,7 @@ myObj.meaningOfLife; // = 43
<p dir='rtl'>راه دوم - که همه جا قابل استفاده است - مربوط به سازنده ها می شود.</p>
<p dir='rtl'>سازنده ها دارای عضوی با نام prototype هستند. این پیش نمونه ی خود سازنده نیست</p>
<p dir='rtl'>بلکه پیش نمونه ایست که به تمامی اشیاء ساخته شده توسط این سازنده الحاق میشود.</p>
+
```js
MyConstructor.prototype = {
myNumber: 5,
@@ -484,6 +562,7 @@ myNewObj2.getMyNumber(); // = 6
<p dir='rtl'>رشته ها و سایر سازنده های پیش ساخته ی زبان نیز دارای این ویژگی هستند.</p>
+
```js
var myNumber = 12;
var myNumberObj = new Number(12);
@@ -492,6 +571,7 @@ myNumber == myNumberObj; // = true
<p dir='rtl'>به جز این که این سازنده ها دقیقا مانند سازنده های دیگر نیستند.</p>
+
```js
typeof myNumber; // = 'number'
typeof myNumberObj; // = 'object'
@@ -508,6 +588,7 @@ if (0){
<p dir='rtl'>گاها به از این خاصیت با عنوان پلی فیل و برای اضافه کردن ویژگی های جدید به مجموعه ای از اشیاء فعلی زبان استفاده میشود </p>
<p dir='rtl'>که کاربرد فراوانی در پشتیبانی از نسخه های قدیمیتر مرورگر ها دارد.</p>
+
```js
String.prototype.firstCharacter = function(){
return this.charAt(0);
@@ -518,6 +599,7 @@ String.prototype.firstCharacter = function(){
<p dir='rtl'>برای مثال، پیشتر اشاره کردیم که Object.create در نسخه های جدید پشتیبانی نشده است</p>
<p dir='rtl'>ولی میتوان آن را به صورت پلی فیل استفاده کرد.</p>
+
```js
if (Object.create === undefined){ // don't overwrite it if it exists
Object.create = function(proto){