您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页前端课程笔记(三):JavaScript基础

前端课程笔记(三):JavaScript基础

来源:二三四教育网

需要注意的几点:

  • 使用严格模式 "use strict"
  • 在语句中不要省略分号 ; 和中括号{ }
  • 声明变量的时候不要忘记使用关键字 var

undefined

undefined是一个特殊的值,当一个变量声明但是未初始化时,就会被赋予undefined 值。

null

  • 空对象指针
  • 当一个变量是为了保存一个对象,但是没办法立即初始化的时候,应该为之分配一个 null 值。

NaN (not a number)

  • 任何涉及NaN的操作都会返回NaN
  • NaN与任何值都不相等,包括它本身

数据类型转化的几个相关方法

  • Number()
  • String()
  • parseInt()
  • parseFloat()
  • toString

运算符

一元加运算符

var a = +"1";
console.log(typeof a);   //  number

布尔运算符

  • !!Boolean(),强制类型转化
  • && 短路操作,即 if - else
  • || 默认值, 如:var a = b || 1;
var a =1;
if (true) {
    a=2;
}    //等价于      true && (a=2);
function score(s) {
    return s || 5;
}
score(1);    //  1
score();     //  5

三元运算符

function fib(n) {
    if (n<2) {
        return n;
    }
    else {
        return fib(n-1) + fib(n-2);
    }
}
//等价于
function fib(n) {
   n<2 ? n : fib(n-1) + fib(n-2);
}

语句

函数调用语句

//  示例1
function foo() {}
foo();
//  示例2
fooRef = function() {}
fooRef();
//  示例3,没有引用的匿名函数的调用方法(1)
(function() {
    //...
}());
//  示例4,没有引用的匿名函数的调用方法(2)
(function() {
    //...
})();
//  示例5,没有引用的匿名函数的调用方法(3)
void function() {
    //...
}();

with语句

尽量不要使用:

  • strict模式下会报错
  • 难以调试和维护
  • 降低性能

异常

  • try
  • catch
  • finally

throw error;

返回值

无返回值的语句

  • 空语句
  • var a = b; 变量声明语句
  • function a() {} 函数声明
  • break/continue/label 控制语句

以下两个式子返回的是什么?WHY?

eval('1+2;var x=5;;;;;function f() {};');    //  3

eval('1+2;var x=5;;function f() {};void 0');  // undefined

eval方法返回最后一个具有返回值的式子的值

函数

参数 (arguments)

  • 类数组(但不是数组)
  • arguments.length (取决于传入参数的个数,即函数的实际函数的个数,而非形式参数的个数)

练习题

使用模拟函数重载来编写一个具有如下功能的函数:

  1. 如果输入参数大于三个,返回最后一个参数。
  2. 如果输入参数小于三个且全部为数字,则返回排序后的数组,如果最后一个数为奇数则降序排列,反之升序排列。
  3. 如果输入参数小于三个且全部为字符串,则将所有参数强制转化为字符串连接返回。
function myFunc() {
    var arguLen = arguments.length;
    if (arguLen > 3) {      //第 1 种情况
        return arguments[arguLen-1];
    }
    else if (arguLen < 3) {
        var numFlag = true;      //用于判断是否均为数字
        var strFlag = false;      //用于判断是否包含字符串
        for (var i = 0; i < arguLen; ++i) {
            if (typeof arguments[i] != "number") {
                numFlag = false;
            }    
            if (typeof arguments[i] === "string") {
                strFlag = true;
                break;
            }
        }
        if (numFlag) {      //第 2 种情况
            var args = [].slice.call(arguments, 0);      //转成数组
            if (args[arguLen - 1] % 2] == 0) {
                return args.sort(function(a,b){return a-b;});      //升序
            }
            else {
                return args.sort(function(a,b){return b-a;});      //降序       
            }
        }
        else if (strFlag) {      //第 3 种情况
            var result = "";
            for (var i = 0; i<arguLen; ++i) {
                result += String(arguments[i]);
            }
            return result;
        }
    }
    return;
}

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务