目录
JavaScript背景
四句精髓
- var 声明变量
- 五种基本类型,其余为引用类型
- function 声明函数,函数名实质上是函数的地址
- JavaScript 中一切皆对象
三大特点
- 解释性语言
- 动态语言(变量和函数的返回值是不指定数据类型的)
- 基于原型的面向对象
JS 最初在浏览器端运行;node.js 类似于jsp 的 java 后台;node.js 环境类似tomcat ,是一个解析器,能接受用户请求,装了node.js 环境后可以写服务器端代码
一、变量
变量的作用是给某个值或对象标注名称。
1 变量的声明的方式
-
声明后赋值
var foo; //声明变量 foo = “abc”;
-
声明和赋值同时进行:
var foo = “abc”;
-
JavaScript没有变量类型的概念 ,给一个变量赋什么样的值,这个变量就是什么类型的变量。
被声明但没有被赋值的变量,其值为undefinedvar foo; document.write(foo);
-
省略var——隐式声明变量
JavaScript中的var关键字可以省略,这样声明的变量称为隐式声明变量。隐式声明的变量为全局变量,即使在函数内部声明的变量也是全局变量。声明变量时尽量不要省略var。
2 常量
-
常量使用const关键字声明,习惯上常量都为大写字母。
const Foo = 7;
-
常量即使再次赋值,这个常量的值也不会发生改变。
const FOO = 7; FOO = 8; Document.write(FOO);
-
如果在声明时没有对常量进行赋值的话,它的值就是undefined。处理方式与变量相同。
const Foo; document.write(Foo); //undefined
3 数据类型
可以存放任何类型的数据
5种基本数据类型: ( 除此之外为Object(引用)类型 )
- 字符串
- 数值型
- 布尔型
- Null型
- undefined型
字符串类型
-
通常使用
" "
或' '
括起来的字符,搭配使用可以减少转义字符的出现。两者本身无区别 -
如果需要表达特殊字符串,需要使用\来进行转义。
-
new String()用来生成一个字符串对象。
Var sobj = new String(“abc”);
-
字符串和字符串对象之间存在隐式转换。
字符串转成整数 string -> int : parseInt()
字符串转成数字 :Number()
数值型
-
JavaScript种的数值都是64位浮点型
-
New Number(123)
-
NaN表示不是一个数。对NaN进行任何运算都是NaN。isNaN()函数用来判断,一个数是否是一个数。
布尔型、布尔类
遇 Null / undefined / 0 / “ ” (空字符串)转换成false ;
其余转换成true
Null型
Null代表变量没有引用任何对象。
Undefined型
Undefined型只代表变量还没有被赋值。
Var u;
Typeof u;//undefined
4 var & let
-
java 中的变量是块级别的,
{}
内为一个块,块外不能调用块里;
而JavaScript 中 var 声明的变量是函数级别的,里外浑然一体都可访问 -
ES6 提供一个新的变量 let,let 声明的变量是块级别的
二、函数
**闭包:**函数套函数
JavaScript中的函数与PHP中的函数很相似,但运行机制有些不同。JavaScript中的函数是一种对象,函数名的作用与变量名的作用一样,用于标识一个函数(变量是为了标识一个值)。
1 函数的声明与调用
function 函数名 (参数,参数,……){
函数体
}
e.g.
Function sum(a,b){
Return Number(a) + Number(b);
}
Sum():
其实这是声明一个函数,并把这个函数赋值变量sum。我们可以这样:
var sum3 = sum;
sum3(1,2);
2 匿名函数
- 匿名函数是没有名称的函数。
- 匿名函数是一个表达式,而不是一种语句,因此,匿名函数也可以在表达式中使用,且会有返回值,匿名函数的返回值是一个Function 对象的引用。
Function(参数,参数,……){
函数体
}
e.g.
var sum2 = function(a,b){
return Number(a) + Number(b);
}
sum2();
三、对象
JavaScript对象可以定义为属性的集合。
表面上看JavaScript对象非常像PHP的关联数组,但JavaScript对象还有着PHP索引数组没有的特点:
- JavaScript的属性值可以由函数来指定。
- JavaScript具备拥有一种基于原型链的构造方法。
通过对象字面量表达式生成一个对象:
{
属性名:属性值,
属性名:属性值,
......
}
例子:
{x:1,y:2}
{
x:1,
y:2,
color:{
r:3,
g:4,
b:5
}
}
访问对象属性
- 可以通过点号(.)和方括号([])的方式去访问一个对象的属性。
- []中可以放变量,而.不能使用变量来取值
1 定义对象两种方法
- 数据定义在构造函数中,方法(函数)定义在原型上,为了不浪费空间
(prototype 相当于 java 中的object ,所有对象继承于prototype)//声明方法和构造函数等,用对象的时候通过构造函数 new 出对象 function Person(age,time){ this.age = age; this.time = time; } Person.prototype.show = function(){ console.info("My name is "+ this.name); }
- 直接定义对象,此对象可直接拿来用
var obj = { name:"zhangsan", age:20, show:function(){ console.info(this.name); } }