Node.js + MongoDB + AngularJS - 2 Javascript基础

来源:互联网 发布:unity3d怎么播放动画 编辑:程序博客网 时间:2024/05/16 13:59

学习node.js时,作为对javascript的复习。不作为详细的基础讲解,只是简单的大体上过一遍。

1. 定义变量

使用 var 关键字

var myData ;var myString = 'Some Text' ;var newString = myString + ' some More Text' ;

命名规则:必须以字母、$或_开头,并且不能包含空格。
区分大小写。

2. 了解Javascript数据类型

  • 字符串(String)

    var myString = 'Some Text' ;var anotherString = 'Some More Text' ;
  • 数值(Number)

    var myInteger = 1 ;var cost = 1.33 ;
  • 数组(Array)

    var arr = { 'one', 'two', 'three' } ;var first = arr[ 0 ] ;
  • 对象字面量(Object)

    var obj = { 'name': 'Brad', 'occupation': 'Hacker', 'age': 'Unknow' } ;var name = obj.name ;
  • 空(Null)

    var newVar = null ;

    注意:Javascript是一种无类型的语言。在脚本中并不需要指定一个变量的数据类型。解释器会自动推算出某个变量的正确数据类型。此外,可以将不同类型的值赋给一种类型的变量。

3. 使用运算符

3.1. 算数运算符

运算符 说明 + 加 - 减 * 乘 / 除 % 模(除法的余数) ++ 递增 – 递减

注意:也可以使用+运算符来连接字符串或将字符串和数值加在一起。这可以快速连接字符串,以及将数值数据添加到输出字符串。

3.2 赋值运算符

运算符 示例 相当于算数运算符 = x = 5 x = 5 += x += 5 x = x + 5 -= x -= 5 x = x - 5 *= x*=5 x = x * 5 /= x /= 5 x = x / 5 %= x %= 5 x = x % 5

3.3. 运用比较和条件运算符

  • 比较运算符
运算符 说明 == 等于(只是值) === 值和类型都相等 != 不等于 !== 值和类型都不相等 > 大于 >= 大于或等于 < 小于 <= 小于或等于

- 逻辑运算符

运算符 说明 && 并且 ! 否

- if语句

if( x == 5 ) {    do_something() ;}if( x == 5 ) {    do_something() ;} else {    do_something_else() ;}if( x < 5 ) {    do_something() ;} else if( x < 10 ) {    do_something_else() ;} else {    do_nothing() ;}
  • switch语句
switch( 表达式 ) {case value1:     <要执行的代码>    break ;case value2:    <要执行的代码>    break ;default:    <如果不是value1也不是value2要执行的代码>    }

注意:**switch语句完全计算表达式,得到一个值,这个值可以是字符串、数值、布尔值,甚至是一个对象。
每个case语句都在最后包括break语句,表示从switch语句中断。**

4. 循环

4.1. while

var i = 1 ;while( i < 5 ) {    console.log( 'Iteration ' + i ) ;    i++ ;}

4.2. do/while

var i = 0;do {    console.log( 'Iteration ' + i ) ;    i++ ;} while( i <  5 ) ;

4.3. for

for( 赋值; 条件; 更新 ) {    <要执行的代码>}

4.4. for/in

var days = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ] ;for( var idx in days ) {    console.log( 'It's ' + days[ idx ] + '<br>' ) ;}

4.5. 中断循环

  • break
var days = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ] ;for( var idx in days ) {    if( days[ idx ] == 'Wednesday' ) break ;    console.log( 'It's ' + days[ idx ] + '<br>' ) ;}
  • continue
var days = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ] ;for( var idx in days ) {    if( days[ idx ] == 'Wednesday' ) continue ;    console.log( 'It's ' + days[ idx ] + '<br>' ) ;}

5. 创建函数

为了代码重用

5.1. 定义函数

关键字:function

function myFunction() {    console.log( 'Hello World' ) ;}myFunction() ;

5.2. 传递变量给函数

function greeting( name, city ) {    console.log( 'Hello ' + name ) ;    console.log( '. How is the weather in ' + city ) ;}var name = 'Brad' ;greeting( name, 'Florence' ) ;

5.3. 函数返回值

function formatGreeting( name, city ) {    var retStr = '' ;    retStr += 'Hello <b>' + name + '/n' ;    retStr += 'Welcome to ' + city + '!' ;    return retStr ;}var greeting = formatGreeting( 'Brad', 'Rome' ) ;console.log( greeting ) ;

5.4. 匿名函数

console.log( doCalc( 5, 10, function( n1, n2 ) {    return n1 + n2 ;} ) ) ;

匿名函数的好处:不需要正式定义不在代码的其他任何地方使用的东西。因此,匿名函数使javascript代码更简洁已读。

6. 变量作用域

var myVar = 1 ;function writeIt() {    var myVar = 2;     console.log( 'Variable = ' + myVar ) ;    writeMore() ;}function writeMore() {    console.log( 'Variable = ' + myVar ) ;}writeIt() ;

7. Javascript对象

使用对象而不只是一个函数集合,是编写清洁、高效、可重复使用的Javascript代码的关键。

7.1. 使用对象语法

一个对象实际上只是一个容器,它将多个值和函数组合在一起。对象的值称为属性,对象的函数称为方法。
关键字:new

var x = new Number( '5' ) ;

对象语法:使用对象名称,然后是一个点,然后是属性或方法的名称。

var s = myObj.name ;myObj.name = 'new Name' ;var name = myObj.getName() ;myObj.getName = function() {    return this.name ;}

创建对象

var obj = {    name: 'My Object',    value: 7,    getValue: function() {        return this.value;    }}

还可以通过使用 object propertyName 的语法来访问Javascript对象的成员。

var propName = 'User Name' ;var val1 = myObj[ propName ] ;var val2 = myObj[ 'Other Name' ] ;

7.2. 创建自定义对象

  • 一:
var user = new Object() ;user.first = 'Brad' ;user.last = 'DayLey' ;getName = function() {    return this.first + ' ' + this.last ;}
  • 二:
var user = {    first: 'Brad',    last: 'Dayley',    getName: function() {        return this.first + ' ' + this.last ;    }}
  • 三:
function User( first, last ) {    this.first = first ;    this.last = last ;    this.getName = function() {        return this.first + ' ' + this.last ;    }}var user = new User( 'Brad', 'Dayley' ) ;

7.3. 使用原型对象模式

在原型中定义的函数只在Javascript加载时被创建一次,而不是每创建一个新的对象时都被创建。

function UserP( first, last ) {    this.first = first ;    this.last = last ;}UserP.prototype = {    getFullName: function() {        return this.first + ' ' + this.last ;    }}

8. 字符串

String对象是迄今为止在Javascript中最常用的对象。在定义一个字符串数据类型的变量的时候,Javascript就自动为你创建一个String对象。

  • String对象的转义码
转义码 说明 \’ 单引号 \” 双引号 \ 反斜杠 \n 换行符 \r 回车符 \t 制表符 \b 退格符 \f 换页符

- String对象的方法

方法 说明 charAt( index ) 返回指定索引处的字符 charCodeAt( index ) 返回指定索引处的Unicode值 concat( str1, str2, … ) 连接两个或多个字符串,返回连接后的字符串的副本 fromCharCode() 将Unicode值转换成实际的字符 indexOf( subString ) 返回指定的subString 值第一次出现的位置。如果没有找到subString,返回-1 lastIndexOf( subString ) 返回指定的subString值最后出现的位置。如果没有找到subString,返回-1 match( regex ) 搜索字符串,并返回正则表达式的所有匹配 replace( subString/regex, replacementString ) 搜索字符串的字符串或正则表达式匹配,并用新的子串替换新匹配的子串。 search( regex ) 基于正则表达式搜索字符串,并返回第一个匹配的位置 slice( start, end ) 返回字符串的start和end(不含) 位置之间的部分的一个新字符串 split( sep, limit ) 根据分隔符或正则表达式,把字符串分割为子字符串数组。可选的limit参数定义从头开始执行分割的最大数量 substr( start, length ) 从字符串置顶的start位置开始,并按照指定的字符长度提取字符 substring( from, to ) 返回字符索引在from 与 to(不含) 之间的子串 toLowerCase() 将字符串转换为小写 toUpperCase() 将字符串转换为大写 valueOf() 返回原始字符串值

8.1. 合并字符串

使用 + 操作或使用第一个字符串上的concat()函数将多个字符串合并

var word1 = 'Today ' ;var word2 = 'is ' ;var word3 = 'tomorrows\' ' ;var word4 = 'yesterday.' ;var sentence1 = word1 + word2 + word3 + word4 ;var sentence2 = word1.concat( word2, word3, word4 ) ;

8.2. 在字符串中搜索子串

var myStr = 'I think, therefore I am.' ;if( myStr.indexOf( 'think' ) != -1 ) {    console.log( myStr ) ;}

8.3. 在一个字符串中替换单词

var username = 'Brad' ;var output = '<username> place enter your password: ' ;output.replace( '<username>', username ) ;

8.4. 将字符串分割为数组

var t = '12:10:36' ;var tArr = t.split( ':' ) ;var hour = tarr[ 0 ] ;var minute = tArr[ 1 ] ;var sencond = tArr[ 2 ] ;

9. 数组

方法 说明 concat( arr1, arr2, … ) 返回一个数组和作为参数传递的数组的连接副本 indexOf( value ) 返回数组中value的第一个索引。或如果没有找到该条目,返回-1 join( separator ) 把一个数组中所有元素连接为由separator分割的单个字符串。如果没有指定分隔符,则使用逗号作为分隔符 lastIndexOf( value ) 返回数组中value的最后一个索引。如果没有该条目,返回-1 pop() 删除数组中的最后一个元素,并返回该元素 push( item1, item2, … ) 添加一个或多个新元素到数组的结尾,并返回数组的新长度 reverse() 反转数组中所有元素的顺序 shift() 删除数组中的第一个元素,并返回该元素 slice( start, end ) 返回start和end索引之间的元素 sort( sortFunction ) 对数组进行排序。sortFunction是可选的 splice( index, count, item1, item2,.. ) 在index指定的索引处,删除count个条目,然后在index处插入作为参数传入的任意可选条目 toString() 返回一个数组的字符串形式 unshift() 将新元素添加到数组的开头,并返回新的长度 valueOf() 方法返回一个数组对象的原始值

9.1. 合并数组

var arr1 = [ 1, 2, 3 ] ;var arr2 = [ 'three', 'four', 'five' ] ;var arr3 = arr1 + arr2 ;var arr4 = arr1.concat( arr2 ) ;

9.2. 遍历数组

var week = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ] ;for( var i = 0; i < week.length, i++ ) {    console.log( '<li>' + week[ i ] + '</li>' ) ;}for( dayIndex in week ) {    console.log( '<li>' + week[ dayIndex ] + '</li>' ) ;}

9.3. 数据转换为字符串

var timeArr = [ 12, 10, 36 ] ;var timeStr = timeArr.join( ':' ) ;

9.4. 检查数组是否包含摸个条目

function message( day ) {    var week = [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ] ;    if( week.indexOf( day ) != -1 ) {        console.log( 'Happy ' + day ) ;    }}

10. 错误处理

关键字: try/catch/finally

10.1. try/catch

try{    var x = badVarName ;} catch( err ) {    console.log( err.name + ': "' + err.message + ' " occurred when assigning x.' ) ;}

10.2. 抛出自己的错误

function sqrRoot( x ) {    try {        if( x == '' ) throw { message: "can't Square Root Nothing" } ;        if( isNaN(x) ) throw { message: "can't Square Root Strings" } ;        if( x < 0 ) throw { message: "Sorry No Imagination" } ;        return "sqrt( " + x + " )" + Math.sqrt( x ) ;    } catch ( err ) {        return err.message ;    }}

10.3. finally

function testTryCatch( value ) {    try {        if( value < 0 ) {            throw 'too small' ;        } else if( value > 10 ) {            throw 'too big' ;        }         your code here ;    } catch ( err ) {        console.log( 'The number was ' + err ) ;    } finally {        console.log( 'This is always written' ) ;    }}
1 0
原创粉丝点击