构造函数new对于使用.代表创建对象.此外,它可以被用作普通的函数调用,因为它也是一个功能. function Person(name) { this.name=name; } Person(12); alert(window.name);//12 能够看到当构造函数被当成普通函数调用的时候.this代表的是全局的window对象. 非常显然把构造函数当成普通函数调用,不是好的做法. 也没有什么道理要这么做. 实际中应该杜绝这样奇怪的使用方法,以免产生奇怪的问题. function Person…
1 JavaScript的组成和书写位置 Javascript:运行在客户端(浏览器)的脚本语言,JavaScript的解释器被称为JavaScript引擎,为浏览器的一部分,与java没有直接的关系. Java:服务器端的编程语言. API:Application Programming Interface,应用程序编程接口. 1.1 JavaScript的组成 ECMAScript核心:描述了语言的基本语法和数据类型,提供核心语言功能.主要包含语法.类型.语句.关键字.保留字.操作符.对象.…
前言 本来想把这个与上篇博客写到一起的,但是考虑到是两个知识点还是分开算了,于是我们继续今天的学习吧. 基本类型与引用类型 ECMAScript的的变量有两种类型: 基本类型(值类型):简单数据段 引用类型:多个值构成的对象 在变量赋值结束后,解析器必须知道这个变量时基本数据类型还是引用类型,需要注意的是string在js中是值类型. 复制的差异 值类型的复制会在内存中创建副本,所以彼此间不会影响,但是引用类型只是将变量的引用复制,其指向的仍然是一个对象,会相互影响: var a = {}; a…
本文是这篇文章的简单翻译. 如果按照下面的代码按照JavaScript程序的执行方式执行,alert函数会显示什么? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 你可能会吃惊于答案是10,而下面这个很可能让你迷糊: var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 在这,浏览器会显示1…
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/学习. 在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域范围是整个函数体,在函数体外部,不能被引用. 'use strict'; function foo() { var x = 1; x = x + 1; } x = x + 2; /…
下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 结果是10: 那么下面这个呢? var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 结果是1. 吓你一跳吧?发生了什么事情?这可能是陌生的,危险的,迷惑的,同样事实上也是非常有用和印象深刻的javascript语言特性.…
首先JavaScript中的变量分为基本类型和引用类型. 基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象. 1.参数传递 javascript中所有参数的传递都是值传递. 1.1 基本数据类型的传递(undefined ,Null,Boolean,number,String) 1--->var money = 10; 2--->var t=function (money){ money = 5; alert(money); //5 }3--->t(mon…
      构造函数其实就是一个使用new操作符调用的函数.当使用new调用时,构造函数内用到的this对象会对指向新创建的对象实例,如下的例子所示: function Person(name, age, job){ this.name = name; this.age = age; this.job = job; } var person =("Nicholas",29,"Software Engineer");       上面这个例子中,Person构造函数使…
闭包和作用域链是JavaScript中比较重要的概念,首先,看看几段简单的代码. 代码1: var name = "stephenchan"; var age = 23; function myFunc() { alert(name); var name = "endlesscode"; alert(name); alert(age); alert(weight); } myFunc(); myFunc(); 上述代码1中,两次调用myFunc()的输出是一致的.可…
我之前用过闭包,用过this,虽然很多时候知道是这么一回事,但是确实理解上还不够深入.再一次看javascript高级程序设计这本书时,发现一起很多疑难问题竟然都懂了,所以总结一下一些理解,难免有错,所以希望有大神可以指出或者补充. 一开始都是从作用域链开始的,要理解作用域链,首先要先说几个名词,一开始把我搞晕的几个名词.执行环境(execution context),变量对象(variable object),作用域链(scope chain). 执行环境,里面有是运行时的环境,包括了当前作用…