Jquery第三课 Javascript基本语法

注释

JavaScript支持与C语言相同的注释方法,单行注释(//)和多行注释(/*
*/
)。代码中的注释在执行的时候将被忽略,只是起到说明代码的功能,便于代码维护和理解。

//单行注释

/*
多行注释
1. 这是一行注释
2. 这还是一行注释
3. 注释只是起到说明性作用
*/

空白字符

空白字符包括空格、回车、换行等符号,在JavaScript中也会被忽略掉,只是起到维持代码格式的作用,方便查看。在实际应用中,JavaScript代码部署到服务器上时常常使用工具将代码中的空白字符去掉,以便减少文件大小。

//适当的空白字符可以增加代码的可读性
var foo = function() {
    for (var i = 0; i < 10; i++) {
        alert(i);
    }
};
foo();
//等价
var foo=function(){for(var i=0;i<10;i++){alert(i);}};foo();

保留字(关键字)

在定义标识符的时候不能使用关键字或保留字。

  • ECMAScript 6的关键字
break extends switch
case finally this
class for throw
catch function try
const if typeof
continue import var
debugger in void
default instanceof while
delete let with
do new yield
else return  
export super  
  • ECMAScript预留关键字(enum、await)
  • strict模式语录关键字
implements static public
package interface  
protected private  
  • ECMAScript老规范中的关键字(ECMAScript 1-3)
abstract final native
boolean float short
byte goto synchronized
char int transient
double long volatile
  • 字面常量falsetrue以及null也是保留字

标识符

标识符作为变量或函数的名字,在后续的代码中可以引用它所表示的变量或函数。标识符的命名必须遵循以下规则:

  • 不能与保留字(关键字)同名。
  • 只能由字母、数字、$以及下划线_组成。
  • 第一个字符不能为数字。

标识符命名应该尽量使用有意义的名字。

//合法的标识符
var myAwesomeVariable = "a";
var myAwesomeVariable2 = "b";
var my_awesome_variable = "c";
var $my_AwesomeVariable = "d";
var _my_awesome_variable_$ = "d";

//非法的标识符
var 345_abc = "a";  //不能以数字开头
var break = "b";    //不能使用保留字
var ***abc = "c";   //只能使用字母、下划线、$以及数字

变量定义

JavaScript使用var定义变量。

var test = 1;
var test2 = function() {};

var test3 = 2, test4 = function(){};

没有初始化的变量默认值为undefined

var x;
x === undefined;    //true

数据类型

  • 基本数据类型 a. 字符串(String),JavaScript中的字符串可以用单引号和双引号"表示。
var a = "I am a string";
var b = ‘So am I!‘;
var c = ‘I have "!‘
var c = "I must use escape\"".  //使用转义字符

b. 数值类型,可以是任意的正数、负数,JavaScript没有明显的浮点数和整数之分。 c. 布尔类型,可以为truefalse
d. JavaScript中还有两个特殊的类型nullundefinednull表示没有值,这与C语言中的NULL类似。而undefined表示变量没有赋值。

//null
var foo = null;

//undefined
var bar1 = undefined;
var bar2;

对象

JavaScript中所有东西都是对象。我们可以在[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference#Global_Objects]上找到大量的内置对象。下面主要介绍Object、Array和Function。

使用字面对象是最简单的对象创建方法。对象是由无序的键值对组成,其中键被称为属性property,而值可以是任的JavaScript类型的对象。我们通过使用点语法和括号语法创建和访问一个对象的属性。

//空对象
var person1 = {};

//使用点语法给属性赋值
person1.firstName = "John";
person1.lastName = "Doe";

//使用点语法访问属性
alert(person1.firstName + " " + person1.lastName);

//创建对象
var person2 = {
    firstName = "Jane",
    lastName = "Doe"
};

alert(person2.firstName + " " + person2.lastName);

var people = {};

//括号语法给属性赋值
people["person1"] = person1;
people["person2"] = person2;

//混合使用两种语法
alert(people["person1"].firstName);
alert(people["person2"].firstName);

如果一个属性在访问的时候还没有定义,将返回undefined结果。

var person = { name: "John Doe"};
alert( person.email );  //undefined

在JavaScript中,几乎所有东西都是对象,数组、函数、数值甚至字符串等都是对象,它们都有自己的方法和属性。

var myObject = {
    sayHello: function() {
        console.log("hello");
    },
    myName: "Rebecca"
};

myObject.sayHello();            //"hello"
console.log(myObject.myName);   //"Rebecca"

创建字母对象的时候,可以用任意的标识符、字符串或者是数值作为key

Array

数组是一个存放有序元素的对象。我们可以使用从0开始的下标操作数组中的元素,如果超出范围则返回undefined。每个数组对象都有一个length属性表示元素的个数。

//使用构造器创建数组
var foo = new Array();

//使用字面方式创建对象
var bar = [];

这两种创建数组的方式都会将参数作为它的初始元素,但是需要注意的一点是:使用构造器创建的时候,如果只有一个参数,构造器将认为这是数组的大小!

//foo.length == 1
var foo = [ 100 ];
alert( foo[0] );        //100
alert( foo.length );    //1

//bar.length == 100
var bar = new Array(100);
alert(bar[0]);      //undefined
alert(bar.length);  //100

数组对象拥有一系列常用的函数。

var foo = [];

foo.push("a");  //添加元素
foo.push("b");  //添加元素
foo[2] = "c";   //添加元素

alert(foo[0]);  //a
alert(foo[1]);  //b

alert(foo.length);  //c

foo.pop();

alert(foo[0]);  //a
alert(foo[2]);  //undefined

alert(foo.length);  //2

foo.unshift("z");

alert(foo[0]);  //z
alert(foo[1]);  //a

alert(foo.length);  //3

foo.shift();

alert(foo[0]);  //a
alert(foo[2]);  //undefined

alert(foo.length);  //2

Array的方法和属性 - .length获取数组中元素个数。

var myArray = ["Hello", "world", "!"];
console.log(myArray.length);    //3
  • .concat()连接两个数组。
var myArray = [2, 3, 4];
var myOtherArray = [5, 6, 7];
var wholeArray = myArray.concat(myOtherArray);  //[2, 3, 4, 5, 6, 7]
  • .join()创建一个由数组元素使用分隔符连接而成的字符串。
var myArray = ["hello", "world", "!"];
//默认分隔符为逗号
console.log(myArray.join());    //"hello,world,!"
console.log(myArray.join(" ")); //"hello world !"
console.log(myArray.join("!!"));//"hello!!world!!!"

console.log(myArray.join(""));  //"helloworld!"
  • .pop()移除最后一个元素,与.push()刚好相反。
var myArray = [];

myArray.push(0);    //[0]
myArray.push(2);    //[0, 2]
myArray.push(7);    //[0, 2, 7]
myArray.pop();      //[0, 2]
  • .reverse()反转数组元素。
var myArray = ["world", "hello"];
myArray.reverse();  //["hello", "world"]
  • .shift移除数组第一个元素。
var myArray = [];

myArray.push(0);    //[0]
myArray.push(2);    //[0, 2]
myArray.push(7);    //[0, 2, 7]

myArray.shift();    //[2, 7]
  • .slice()获取数组的元素,并生成一个新的数组,其中参数为起始位置。
var myArray = [1, 2, 3, 4, 5, 6, 7, 8];
var newArray = myArray.slice(3);

console.log(myArray);   //[1, 2, 3, 4, 5, 6, 7, 8]
console.log(newArray);  //[4, 5, 6, 7, 8]
  • .splice()移除从index开始的length个元素,并插入可变参数values表示的所有数据,至少有三个参数。
myArray.splice(index, length, values, ...);

var myArray = [0, 7, 8, 5];
//从1个位置开始,移除2个元素,并将[1, 2, 3, 4]插入其中
myArray.splice(1, 2, 1, 2, 3, 4); 

console.log(myArray);   //[0, 1, 2, 3, 4, 5]

- .sort()数组排序,使用一个比较函数作为参数,缺省按升序排列。

var myArray = [3, 4, 6, 1];
myArray.sort(); //[1, 3, 4, 6]

//返回值大于0表示a > b。
function descending(a, b) {
    return b - a;
}

myArray.sort(descending);   //[6, 4, 3, 1]
  • .unshift在数组第一个位置插入元素。
var myArray = [];

myArray.unshift(0); //[0]
myArray.unshift(2); //[2, 0]
myArray.unshift(7); //[7, 2, 0]
  • .forEach()遍历数组,使用一个拥有三个参数的函数作为参数。
//elem为数组元素
function printElement(elem) {
    console.log(elem);
}

//index为元素位置
function printElementAndIndex(elem, index) {
    console.log("Index " + index + ": " + elem);
}

//array为数组本身
function negateElement(elem, index, array) {
    array[index] = -elem;
}

myArray = [1, 2, 3, 4, 5];

//依次打印数组中的每个元素
myArray.forEach(printElement);

//打印"Index 0: 1", "Index 1: 2", ...
myArray.forEach(printElementAndIndex);

//数组变为[-1, -2, -3, -4, -5]
myArray.forEach(negateElement);

更多关于Array的函数请查看http://learn.jquery.com/arrays/

函数

函数是一个包含可以重复执行的代码的对象,它可以有0个或多个参数以及一个可选的返回值。可以使用多种方式创建函数。

//声明一个函数
function foo() {
    //Do something
}

var foo = function() {
    //Do something
};

有下面几种使用函数的方式。

a. 直接调用函数。

var greet = function(person, greeting) {
    var text = greeting + ", " + person;
    console.log(text);
};

greet("Rebecca", "Hello");  //"Hello, Rebecca"

b. 使用函数的返回值。

var greet = function(person, greeting) {
    var text = greeting + ", " + person;
    return text;
};

console.log(greet("Rebecca", "Hello")); //"Hello, Rebecca"

c. 将函数作为返回值。

var greet = function(person, greeting) {
    var text = greeting + ", " + person;
    return function() {
        console.log(text);
    };
};

var greeting = greeting("Rebecca", "Hello");
greeting(); //"Hello, Rebecca"

d. 立即调用的函数(IIFE),JavaScript的函数在创建后可以马上调用。

(function() {
    var foo = "Hello world";
})();

e. 函数作为参数传递。

var myFn = function(fn) {
    var result = fn();
    console.log(result);
};

myFn(function() {
    return "Hello, world!"; //"Hello, world!"
});

使用命名函数作为参数。

var myFn = function(fn) {
    var result = fn();
    console.log(result);
};

var myOtherFn = function() {
    return "Hello, world!";
};

myFn(myOtherFn);    //"Hello, world!"

jQuery类型检查

jQuery提供基本的类型检查方法。

var myValue = [1, 2, 3];

//JavaScript类型检查操作符typeof检查基本数据类型
typeof myValue === "string";    //false
typeof myValue === "number";    //false
typeof myValue === "undefined"; //false
typeof myValue === "boolean";   //false

myValue === null;   //false

//jQuery类型检查方法
jQuery.isFunction(myValue);     //false
jQuery.isPlainObject(myValue);  //false
jQuery.isArray(myValue);        //true

操作符

  • 基本操作符的使用 ```js //字符串连接 var foo = "hello"; var bar = "world";

console.log(foo + " " + bar);

//数值的乘法和除法 2 * 3; 2 / 3;

//自增自减运算 var i = 1; console.log( ++i) ; //2 console.log(i); //2

var i = 1; console.log(i++); //1 console.log(i); //2 ```

  • 同一个运算符,作用在数值与字符串类型产生的结果可能不同。
var foo = 1;
var bar = "2";
console.log(foo + bar); //12, 转换为字符串并连接

var foo = 1;
var bar = "2";
console.log(foo + Number(bar)); //3,数值相加

一元(unary)的+运算符同样可以将字符串转换为数值。

console.log(foo + +bar);    //3
  • 逻辑运算符 逻辑运算符包括与&&、或||,可以用来连接多个操作数进行逻辑判断。
var foo = 1;
var bar = 0;
var baz = 2;

foo || bar; //返回1,true
bar || foo; //返回1,true
foo && bar; //返回0,false
foo && baz; //返回2,false
baz && foo; //返回1,true

这两个都是二元运算符,如果第一个操作数就能够确定整个表达式的值,则不会去执行第二个表达式。

//如果foo为假,不会执行doSomething()
foo && doSomething(foo);

//如果baz为真,bar === baz
//否则bar == createBar()
var bar = baz || createBar();
  • 比较运算符
var foo = 1;
var bar = 0;
var baz = "1";
var bim = 2;

foo == bar; //false
foo != bar; //true
foo == baz; //true,类型不同

foo === baz;    //false
foo !== baz;    //true
foo === parseInt(baz);  //true

foo > bim;  //false
foo > baz;  //true
foo <= baz; //true

分支语句

  • 有些代码只会在特定的情况下执行,JavaScript使用ifelse进行流程控制。
//流程控制
var foo = true;
var bar = false;

if (bar) {
    //不会执行
    console.log("戴维营教育");
}

if (bar) {
    //不会执行
} else {
    if (foo) {
        //执行
    } else {
        //当bar和foo都为false的时候执行
    }
}
  • 真假对象 下面一些对象表示假。
false       //逻辑假
""          //空字符串
NaN         //不是一个数值
null
undefined   //未定义
0           //数值0

而其它对象都为真。

"0"
"any string"
[]  //空数组
{}  //空对象
1   //非0数值
  • 三目运算符 再一些表达式或简单的判断中,使用三目运算符比if-else效率更高。
var bar = 1;
var foo = bar ? 1 : 0;  //foo == 1;
  • switch语句 switch可以用来根据一组值执行不同的方法。
switch(foo) {
    case "bar":
        alert("the value was bar -- yay!");
        break;

    case "baz":
        alert("boo baz :(");
        break;

    default:
        alert("everything else is just ok");
}

不过在JavaScript中,有时使用其它方法代替switch语句,使得代码可重用性更好。

var stuffToDo = {
    "bar": function() {
        alert("the value was bar -- yay!");
    },

    "baz": function() {
        alert("boo baz :(");
    },

    "default": function() {
        alert("everything else is just ok");
    }
}

//检查属性是否存在
if (stuffToDo[foo]) {
    stuffToDo[foo]();
}
else {
    stuffToDo["default"]();
}

循环语句

循环语句可以让一个代码块重复执行特定次数。

for (var i = 0; i < 5; i++) {
    //Logs "try 0", "try 1", ..., "try 4".
    console.log("try " + i);
}
  • for循环由四个部分的语句组成。
for ([初始化语句]; [条件判断语句]; [迭代器]) {
    [循环体]
}

初始化语句只会执行一次,我们可以在里面为变量设置合适的初始值。而条件判断语句在循环体之前执行。

  • while循环语句。
while( [判断条件] ) {
    [循环体]
}

下面是while的一个典型用法。

var i = 0;
while (i < 100) {
    console.log("Currently at " + i);
    i++;
}
  • do-while循环 与while循环类似,但是至少会执行一次循环体。
do {
    [循环体]
} while([判断条件]);
  • breakcontinue 一个循环必须等循环条件不再满足才会结束。break能够直接结束循环。
for (var i = 0; i < 10; i++) {
    if (something) {
        break;  //结束循环
    }
}

continue停止执行当前这次循环中循环体的代码。

for (var i = 0; i < 10; i++) {
    if (something) {
        continue;   //直接执行i++
    }

    console.log("I have been reached");
}

本文档由长沙戴维营教育整理。

时间: 2024-10-13 20:46:23

Jquery第三课 Javascript基本语法的相关文章

Web前端学习-第三课JavaScript篇

Q5:解释什么是引用类型?在使用引用类型的时候需要注意什么? 引用类型通常叫做类,也就是说,遇到引用值时,所处理的就是对象,就是公用. 类型:  object类型,应用于应用程序中存储和数据传输(创建object实例:new操作和队象字面量表示法): Array类型,JavaScript数组的每一项都可以保持任何类型的数据,数组大小可以动态调整: 转换方法,所有对象都具有tolocalstring()和tostring(),valueOf()方法,调用tostring()和value()方法会返

Jquery第四课 Javascript中this的使用方法

thiskeyword的使用 在JavaScript中使用thiskeyword表示调用方法的对象,这与大部分面向对象语言是一样的.可是因为call.apply.bind等函数的影响.我们能够改变this所代指的对象. 使用call或者apply调用的函数中,this代指传入的第一个參数对象,假设传入null或者undefined.则表示全局对象(window). 通过对象调用函数(方法),函数中的this表示调用该函数的对象. 单独调用的函数中this表示全局对象. var myObject

Jquery第四课 Javascript中this的用法

this关键字的使用 在JavaScript中使用this关键字表示调用方法的对象,这与大部分面向对象语言是一样的.但是由于call.apply.bind等函数的影响,我们可以改变this所代指的对象. 使用call或者apply调用的函数中,this代指传入的第一个参数对象,如果传入null或者undefined,则表示全局对象(window). 通过对象调用函数(方法),函数中的this表示调用该函数的对象. 单独调用的函数中this表示全局对象. var myObject = { sayH

Jquery 第三课(jq元素:获取、添加、删除、设置、绑定、显示隐藏、回调、动画)

1.获取内容: text():获取文本内容.text获取的是文本内容,假设被指定的<div>里面还有各种标签,text也只获取里面的纯文本内容. html():获取括号内内容.而html则是获取里面的全部内容,包括标签也会一起打印出来. [例] $(“#d1”).text(“aaaaa”); //打印出 aaaaa $(“#d1”).html(“<div>aaaa</div>”); //打印出<div>aaaa</div> 2.添加元素: $(A

2015-07-23 JQuery第三课(JQuery元素:获取、添加、删除、设置、绑定、显示隐藏、回调函数、动画)

1.获取内容: text():获取文本内容.text获取的是文本内容,假设被指定的<div>里面还有各种标签,text也只获取里面的纯文本内容. html():获取括号内内容.而html则是获取里面的全部内容,包括标签也会一起打印出来. [例] $(“#d1”).text(“aaaaa”); //打印出 aaaaa $(“#d1”).html(“<div>aaaa</div>”); //打印出<div>aaaa</div> 2.添加元素: $(A

Jquery第二课 Javascript基础

基础知识 网页由三个部分组成:HTML.CSS和JavaScript.它们分别完成不同的功能,其中HTML描述页面内容.CSS负责内容的展示.JavaScript添加交互功能和动态效果.三者一起组成一个完整的Web页面. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>长沙戴维营教育jQuery教程 第二课</title> <!-- CS

《ASP.NET SignalR系列》第三课 SignalR的支持平台

接着第二课:<ASP.NET SignalR系列>第二课 SignalR的使用说明 一.服务器系统要求 SignalR 服务端组件可以被部署在诸多的服务器配置中,本节描述了它所支持的操作系统版本,.NET framework,IIS.以及其他组件 二.支持的服务器操作系统 SignalR服务端组件可以被部署在一下的服务端和客户端操作系统中.注意使用WebSockets时,SignalR需要Windows Server 2012 或者Windows 8, (WebSocket能够在Windows

前端学习总结(三)javascript——前端世界的精髓所在

一 说一说js的前世,今生与未来 JavaScript历史 要了解JavaScript,首先要回顾一下JavaScript的诞生. 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司. 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是一位叫布兰登·艾克(Brendan Eich)的哥们在两周之内设计出了JavaScript语言.你没看错,这哥们只用了10天时间. 这里放上一张Brendan Eich的照片,向大师致敬!(

javascript基础语法——词法结构

× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫:而说它复杂,是因为要真正掌握它则需要数年时间.实际上,前端工程师很大程度上就是指javascript工程师.前端入门容易精通难,说的是前端,更指的是javascript.本文是javascript基础语法的第一篇——词法结构 与java关系 关于javascript有这样一个说法,java和jav