JavaScript语法基础

//所有在双斜线之后的内容都属于注释
//变量是表示值的一个符号名字
//变量是通过var关键字声明的
var x;      //声明一个变量
//值可以通过等号赋值给变量
x = 0;      //现在变量的值为0
console.log(x)  //通过变量获得其值

//JavaScript支持多种数据类型
x = 1;      //数字
x = 0.01;  //整数和实数共用一种数据类型
x = "hello world";      //由双引号内的文本构成字符串
x = 'JavaScript';       //单引号内的文本同样构成字符串
x = true;       //布尔值
x = false;      //另一个布尔值
x = null;       //null是一个特殊的值,意思是"空"
x = undefined;  //undefined和null非常相似

//JavaScript中最重要的类型就是对象
//对象时名/值的集合,或字符串到值映射的集合
var book = {                //对象时由花括号括起来的
    topic: "JavaScript",   //属性“topic”的值是"JavaScript"
    fat: true              //属性“fat”的值是"true"
};                           //右花括号标记了对象的结束

//通过“.”或者“[]”来访问对象的属性
book.topic          // =>"JavaScript"
book["fat"]         // => true:另外一种获取属性的方式
book.author = "Flanagan";   //通过赋值创建一个新的属性
book.content = {};          //{}是一个空对象,它没有属性

//JavaScript同样支持数组(以数字为索引的列表)
var primes = [2, 3, 5, 7];     //拥有4个值的数组,有由“[”和“]”划定边界
primes[0]                   // => 2:数组中的第一个元素(索引为0)
primes.length               // => 4:数组中的元素个数
primes[primes.length - 1]    //=> 7 :数组的最后一个元素
primes[4] = 9;              //通过赋值来添加新的元素
primes[4] = 11;             //或通过赋值来改变已有的元素
var empty = [];             //[] 是空数组,它具有0和元素
empty.length                // => 0

//数组和对象中可以包含另一个数组或对象:
var points = [          //具有两个元素的数组
    {x: 0, y: 0},       //每个元素都是一个对象
    {x: 1, y: 1}
];

var data = {           //一个包含两个属性的对象
    trial1: [[1, 2], [3, 4]],     //每个属性都是数组
    trial2: [[2, 3], [4, 5]]      //数组的元素也是数组
}

//运算符作用于操作数,生成一个新的值
//最常见的是算术运算符
3 + 2           //=> 5: 加法
3 - 2           // => 1 : 减法
3 * 2           // => 6 :乘法
3 / 2           // => 1.5:除法
points[1].x - points[0].x   // => 1 :更复杂的操作数也能照常工作
"3" + "2"               // => "32":+ 可以完成加法运算也可以作字符串连接

// JavaScript定义了一些算术符的简写形式

var count = 0;  //定义一个变量
count++;        //自增1
count--;        //自减1
count += 2;     //自增2:和"count = count + 2"写法一样
count *= 3;     //自乘:和"count = count * 3"写法一样
count           // => 6 :变量名本身也是一个表达式

//相等关系云算符用来判断两值是否相等
//不等、大于、小于云算符的运算结果是true或false

var x = 2, y = 3;       //这里=等号是赋值的意思,不是比较相等
x == y;                 //=> false:相等
x != y;                 //=>true:不等
x < y;                //=>true :小于
x <= y;                  //=>true:小于等于
x > y;                  //=> false:大于
x >= y                  // => 大于等于
"two" == "three";       //=>false: 两个字符串不相等
"two" > "three";        // => true:"tw"在字母表中的索引大于"th'
false == (x > y);       //=> true : false和false相等

//逻辑云算法是对布尔值的合并或求反
(x == 2) && (y == 3);       //=> true:两个比较的都是true、&&表示"与"
(x > 3) || (y < 3);         //=> false:两个比较不都是true,||表示"或"
!(x == y)                   //=> true: ! 求反

//函数是一段带有参数的JavaScript代码端,可以多次调用
function plus1(x) {     //定义了名为plus1的一个函数,带有参数x
    return x + 1;       //返回一个比传入的参数大的值
}                          //函数的代码块是由花括号包裹起来的部分
plus1(y);               //=>4:y为3,调用函数的结果为 3 + 1

var square = function (x) {     //函数是一种值,可以赋值给变量
    return x * x;               //计算函数的值
};                               //分号标识了赋值语句的结束
square(plus1(y));               // => 16:在一个表达式中调用两个函数

//当函数赋值给对象的属性,我们称为“方法”,所有的JavaScript对象都含有方法
var a = [];                //创建一个空数组
a.push(1, 2, 3);              //push()方法想数组中添加元素
a.reverse();                //将数组元素的次序反转

//我们也可以定义自己的方法,“this”关键字是对定义方法的对象的引用

points.dist = function () { //定义一个方法来计算两点之间的距离
    var p1 = this[0];   //通过this获得当前数组的引用
    var p2 = this[1];   //并取得调用的数组前两个元素
    var a = p2.x = p1.x;    //X坐标轴上的距离
    var b = p2.y - p1.y;     //Y坐标轴上的距离
    return Math.sqrt(a * a + b * b);  //勾股定理,用Math.sqtr();来计算平方根
};
points.dist();              //=> 1.414:求得两个点之间的距离

//这些JavaScript语句使用该语言包含条件判断和循环
function abs(x) {           //求绝对值的函数
    if (x >= 0) {            //if语句
        return x;           //如果比较结果为true则执行这里的代码
    }                           //子句的结束
    else {                      //当if条件不满足时执行else子句
        return -x;         //如果分支中只有一条语句,花括号是可以省略的
    }
}

function factorial(n) {         //计算阶乘的函数
    var product = 1;            //product赋值为1
    while (n > 1) {              //当()内的表达式为true时循环执行{}内的代码
        product *= n;           //product = product * n;的简写
        n--;                    // n = n - 1;的简写
    }
    return product;         //返回product
}

factorial(4);

function factorial2(n) {    //实现循环的另一种写法
    var i, product = 1;
    for (i = 2; i <= n; i++)
        product *= i;
    return product;
}


//定义一个构造函数以初始化一个新的Point对象
function Point(x, y) {       //按照惯例,构造函数均以大写字母开始
    this.x = x;             //关键字this代指初始化的实例
    this.y = y;             //将函数参数存储为对象的属性
}                           //不需要return


//使用new 关键字和构造函数老创建一个实例
var p = new Point(1, 1);//平面几何中的点

//通过给构造函数的prototype对象赋值来给Point对象定义方法

Point.prototype.r = function () {
    return Math.sqrt(           //返回 x^2 + y^2的平方根
        this.x * this.x +       //this值代调用这个方法的对象
        this.y * this.y
    );
};

p.r();          //=>1.414....

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 王涛 著 本书的观点是宣传中医的一个理念:养生。 我们的健康是自己在平时就要注意的,不要等到已经出现疾病的症状后才...
    知识分享阅读 485评论 0 0
  • 没想到一家米线店可以如此的浪漫。 今晚出去逛逛,看看有什么可吃的。逛到了一家米线店,看到店名一下子就吸引我...
    长街听风人阅读 289评论 0 0
  • 弯月天边悬 夜幕降临,美好生活刚刚开始 1 放下碗筷,她对她说,你在家学习,我出去散步哦。 你去吧!她坐在学习桌前...
    db9c7a56803e阅读 221评论 0 6