您的位置:首页 > Web前端 > JavaScript

[前端笔记]第三篇:JavaScript

2016-07-07 16:17 525 查看
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。

一、代码存放位置

JavaScript代码应该存放在:

HTML的head中

HTML的body代码块底部(推荐)

由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。

<script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script>
<script>
alert('123');
</script>


  

两种存在形式:

<!-- 方式一 -->
<script type"text/javascript" src="JS文件"></script>

<!-- 方式二 -->
<script type"text/javascript">
Js代码内容
</script>


  

二、全局变量和局部变量

JavaScript中 var 开头的变量是局部变量,不带 var开头的则是全局变量。

python中是先声明一个局部变量再通过 global 关键字让变量编程全局变量,这和JavaScript有很大区别


<script type="text/javascript">

// 全局变量
name = 'seven';

function func(){
// 局部变量
var age = 18;

// 全局变量
gender = "男"
}
</script>


  

JavaScript中代码注释(此注释仅在script代码块中有效):

单行 //

多行 /* */

三、数据类型

JavaScript 中的数据类型分为原始类型和对象类型:

原始类型:

数字

字符串

布尔值

对象类型:

数组

“字典”

...

两个特殊的数据类型null、undefined

null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。

undefined是一个特殊值,表示变量未定义。

特别的,数字、布尔值、null、undefined、字符串是不可变。

需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。

如图,JavaScript 里的字符串类类似于下面那种情况,创建字符串时候已经规定了占用的内存长度,就造成了不可修改,不可改变长度

JavaScript里的列表字典是采用的 链表 的方式连接不同的内存位置,列表字典长度可变可修改

function f2(){
var arg= [11,22];
function f3(){
console.log(arg);
}
arg = [44,55];
return f3;
}

ret = f2();
ret();


View Code
注:声明提前,在JavaScript引擎“预编译”时进行。

更多:http://www.cnblogs.com/wupeiqi/p/5649402.html

 

3、闭包

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。

function f2(){
var arg= [11,22];
function f3(){
return arg;
}
return f3;
}

ret = f2();
ret();


  

4、面向对象

function Foo (name,age) {
this.Name = name;
this.Age = age;
this.Func = function(arg){
return this.Name + arg;
}
}

var obj = new Foo('alex', 18);
var ret = obj.Func("sb");
console.log(ret);


 

对于上述代码需要注意:

Foo充当的构造函数

this代指对象

创建对象时需要使用 new

上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:

function Foo (name,age) {
this.Name = name;
this.Age = age;
}
Foo.prototype = {
GetInfo: function(){
return this.Name + this.Age
},
Func : function(arg){
return this.Name + arg;
}
}


  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: