JavaScript 语法、数据类型、函数、数组基础知识

JavaScript区分大小写

JavaScript中的所有内容(包括变量,函数名,类名和运算符)都区分大小写,同样,您不能将其 instanceof用作函数的名称,因为它是关键字。

身份标识

第一个字符必须是字母(az或AZ),下划线(_)或美元符号()。其他字符可以是字母(az,AZ),数字(0-9),下划线(_)和美元符号()。

注释

JavaScript支持单行注释和块注释。单行注释以两个正斜杠字符(//)开头。块注释以正斜杠和星号(/ )开头,以相反的( /)结束。


JavaScript数组

JavaScript为您提供了两种创建数组的方法。 第一个是使用Array构造函数如下:

var scores = new Array();

如果您知道数组将包含的元素数,则可以创建一个具有初始大小的数组,如以下示例所示:

var scores = Array(10);

要使用初始元素创建数组,可以在Array()构造函数中将元素作为逗号分隔列表传递。以下示例创建scores包含五个数字的数组

var scores = new Array(9,10,8,7,6);

第二种方式,也许是更优选的方式,创建一个数组是使用数组文字表示法,如下所示:

var array_name = [element1, element2, element3];

JavaScript Array类型提供了 允许您将数组用作堆栈的方法push()和pop()方法。

push()方法

该push()方法允许您将一个或多个元素添加到数组的末尾。该push()方法返回length指定数组中元素数的属性值。

如果将数组视为堆栈,则该push()方法会在堆栈顶部添加一个或多个元素。以下示例创建一个名为空的数组stack,并在stack数组末尾逐个添加五个数字。这就像将每个数字推入堆栈的顶部。

var stack = [];

stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.push(5);

image

pop()方法

该pop()方法删除数组末尾的元素,并将该元素返回给调用者。如果数组为空,则该pop()方法返回undefined

以下示例说明如何使用该pop()方法从堆栈顶部弹出元素。

stack.pop();// [1,2,3,4];

stack.pop(); // [1,2,3];

stack.pop();// [1,2,];

stack.pop();// [1,];

stack.pop(); // []; -> empty

stack.pop();// undefined

image

使用JavaScript堆栈反转字符串,以下示例说明如何使用堆栈反转字符串。


    var stack = [];

    // push letter into stack

    for (var i = 0; i < str.length; i++) {

        stack.push(str[i]);

    }

    // pop letter from the stack

    var reverseStr = '';

    while (stack.length > 0) {

        reverseStr += stack.pop();

    }

}

console.log('JavaScript Stack'); //kcatS tpircSava

JavaScript函数
要声明一个函数,可以使用function关键字,后跟函数名,参数列表,然后是函数体。
声明函数的基本语法如下:

function functionName(argument0,argument1,argumentN){
    // function body
}

闭包
有很多人搞不清匿名函数和闭包这两个概念,经常混用。闭包是指有权访问另一个函数作用域中的变量的函数。匿名函数就是没有实际名字的函数。

闭包,其实是一种语言特性,它是指的是程序设计语言中,允许将函数看作对象,然后能像在对象中的操作搬在函数中定义实例(局部)变量,而这些变量能在函数中保存到函数的实例对象销毁为止,其它代码块能通过某种方式获取这些实例(局部)变量的值并进行应用扩展。

条件

闭包是允许函数访问局部作用域之外的数据。即使外部函数已经退出,外部函数的变量仍可以被内部函数访问到。

因此闭包的实现需要三个条件:

内部函数实用了外部函数的变量

外部函数已经退出

内部函数可以访问

function a() {
            var x = 0;

            return function(y) {

                x = x + y;

                // return x;

                console.log(x);

            }

        }

var b = a();

b(1); //1

b(1); //

上述代码在执行的时候,b得到的是闭包对象的引用,虽然a执行完毕后,但是a的活动对象由于闭包的存在并没有被销毁,在执行b(1)的时候,仍然访问到了x变量,并将其加1,若再执行b(1),则x是2,因为闭包的引用b并没有消除。(后面会解释,闭包返回了函数,函数可以创建独立的作用域)

闭包,其实就是指程序语言中能让代码调用已运行的函数中所定义的局部变量。

但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。

function fn() {

            var max = 10;

            return function bar(x) {

                if (x > max) {

                    console.log(x);

                }

            };

        }

var f1 = fn();

f1(15);

如上代码,bar函数作为返回值,赋值给f1变量。执行f1(15)时,用到了fn作用域下的max变量的值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容