文章目录

  • 变量的声明和赋值
  • 数据类型
  • js的语法结构
  • Js中的函数
  • Js中的数组


变量的声明和赋值

JS中所有类型变量的声明都使用var
1.先声明变量再赋值
var i;
i = 5;
2.同时声明和赋值变量
var s= “xyr”;
var x, y, z = 10;
3.不声明直接赋值
width=5;
变量可以不经声明而直接使用,但这种方法很容易出错,也很难查找排错,不推荐使用

数据类型

JavaScript 拥有动态类型。相同的变量可用作不同的类型
 ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

undefined
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。
var x;
变量 x 没有初始值,将被赋予值undefined
null
表示一个空值,与undefined值相等
一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
alert(null == undefined); //输出 “true”
number
表示一切的数字类型
var num1=23; //整数
var num2=23.0; //浮点数
boolean
true和false
string
一组被引号(单引号或双引号)括起来的文本
var str=“This is a String”;
Function:函数类型
Object:表示所有的引用类型(对象类型) javascript中的对象、数组和null

typeof运算符返回值如下
undefined:变量被声明后,但未被赋值
string:用单引号或双引号来声明的字符串
boolean:true或false
number:整数或浮点数
object:javascript中的对象、数组和null
function: js函数

为什么 typeof 运算符对于 null 值会返回 “Object”。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。
现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

typeof() : 获取数据的类型
instancof关键字: 判断左边类型是否是右边类型的实例

如何判断一个类型是否是一个具体的引用类型?
typeof() : 获取数据的类型

instancof关键字: 判断左边类型是否是右边类型的实例
如何判断一个类型是否是一个具体的引用类型?
给定一个Date类型,我希望输出Date

typeof只能够判断原始数据类型和Object类型,不能够判断具体的引用类型,比如说Date类型
解决方式: 先采用typeof判断返回的是否是object类型,如果是就是使用instanceof关键字判断是否是Date类型
alert(typeof(date) == "object");
if(typeof(date) == "object"){
	// 到了这里说明一定是引用类型
	if(date instanceof Date){
		alert("Date");
	}
}

选择语句
if语句和Java里面一模一样
单if/if - else/多重if/嵌套if
switch语句
Java里面的switch语句可以有哪些类型?
byte short int char String(jdk1.7) 枚举
js里面的switch语句可以支持任意类型

循环语句

for、while循环、do-while循环、for-in
var fruit=[ “apple”, “orange”, “peach”,“banana”];
for(var i in fruit){
document.write(fruit[i]+"
");
}
break/continue关键字

js的语法结构

1.顺序结构
	2.选择结构

单if
if - else
多重if
嵌套if
switch语句
Java里面的switch语句可以有哪些类型?
byte short int char String(jdk1.7) 枚举
js里面的switch语句可以支持任意类型

3.循环结构
for while do-while

jquery 定义列表对象 js定义列表_数组

由于JS是客户端语言,所以可以直接使用浏览器调试
调试方法有三种
1.通过document.write()或者alert()调试
2.通过注释调试
3.通过浏览器调试
Chrome开发人员工具调试
停止断点调试
单步调试,不进入函数体内部
单步调试,进入函数体内部
跳出当前函数
禁用所有的断点,不做任何调试

Js中的函数

函数分类:系统函数和自定义函数

系统函数/全局函数
在JS中总有一些函数是不属于任何一个对象或者类的,这样的函数我们就叫做全局函数
全局函数的访问方式: 直接通过方法访问

eval(): 计算JavaScript字符串,并把它作为脚本代码来执行
encodeURI():把字符串编码成URI
decodeURI():解码某个编码的URI

isNaN() 检查某个值是否是数字
如果参数是一个数字,返回false
如果参数不是一个数字,返回true

parseInt() 解析一个字符串为整数
parseFloat() 解析一个字符串为小数

自定义函数
在Java中如何定义函数呢?
访问权限修饰符 返回值类型 方法名(参数类型 变量名1, 参数类型 变量名2…) [throws 异常类名]{
方法体;
return 返回值;
}

在JS里面定义函数(满足方法定义的二要素: 参数列表 方法名)
三种方式

1.采用function关键字来定义
	格式:
		function 方法名(变量名,变量2...){
			方法体;
			返回值;
		}

2.采用匿名定义的方式来定义函数

3.采用一个内置对象Function来创建(动态函数)
	var sum2 = new Function("参数列表", "方法体");

在JS里面调用函数
1.函数调用的时候参数可以传递多个,可以和形参不匹配
	注意:
		如果实参的个数小于形参的个数,显示NaN
		如果实参的个数大于或者等于形参的个数,显示实际结果
	其实你传的参数多了都会被一个叫做arguments数组接收掉
	
2.如果函数重名了,在Java里面叫做重载,在JS里面不存在重载,js会调用最后一个重名的方法

面试题:
函数的重载
什么是重载? --- 发生在同一个类中,方法名相同,参数的个数,顺序,类型不同构成重载
js里面是不存在重载的

如果我想要实现重载的效果,怎么做? (理解即可)
	function getMax(a, b, c, d){
		// arguments数组接收所有的参数
		document.write(arguments.length + "<br />");
		if(arguments.length == 1){
			return a;
		} else if(arguments.length == 2){
			return a > b ? a : b;
		} else if(arguments.length == 3){
			return a > b ? (a > c ? a : c) : (b > c ? b : c);
		} else if(arguments.length == 4){
			return Math.max(a, b, c, d);
		} else {
			return 0;
		}
	}

在JS中的全局和局部变量问题
局部变量和Java是一样的
全局变量: 在定义后所有script标签都能访问

Js中的数组

Java里面定义数组
动态
	int[] arr = new int[5];
静态
	int[] arr = {20, 30, 40};
	int[] arr = new int[]{20, 30, 40};

	String[] arr = {"haha","hehe","heihei"};

	Student[] stus = new Student[5];

js中定义数组(三种方式)
方式一: var arr = [10, 20, 30];
	var arr = ["haha","hehe","heihei"];
方式二: 利用js中的内置对象Array
	var arr = new Array(10, 20, 30);
方式三: 使用JS的内置对象(动态)
	var arr = new Array(3);
	arr[0] = "Hello";
	arr[1] = "World";
	arr[2] = "Java";
JS中访问数组的元素: arr[i]	

在Java里面数组只有一个属性: length,没有方法,所以Java里面有集合
在JS里面数组也有length属性,还有很多方法,当然这些方法来自于内置对象Array

注意: 
	1.Js中的数组可以存放任意类型的数据
	2.在JS里面数组也有length属性,还有很多方法,当然这些方法来自于内置对象Array
	4.JS中所有的和数组相关的操作和Java一样,比如
		基本操作:
			1.求和
			2.求最值
			3.求平均值
			4.倒置
		复杂操作
			1.排序
				选择排序
				冒泡排序
			2.查找
				基本查找
				二分查找
		针对排好序的数组进行查找,效率更高
练习: 使用js数组对所有元素求和,求最值并且排序

JS中的二维数组
在Java中有二位数组: 本质是一维数组的数组
在Js中定义二维数组
var cityArr = new Array(3);
cityArr[0] = “南昌”;
cityArr[1] = “北京”;
cityArr[2] = “武汉”;

var americanCityArr = new Array(3);
	cityArr[0] = "纽约";
	cityArr[1] = "休斯顿";
	cityArr[2] = "费城";

	var countryArr = new Array(3);
	countryArr[0] = ["中国", chinaCityArr];
	countryArr[1] = ["美国", americanCityArr];