2018-07-22 19:56:41  528068 6

JAVASCRIPT入门基础知识点(二)

 标签:   

数组


对象是最复杂的数据类型,又可以分成三个子类型。


狭义的对象(object)

数组(array)

函数(function)


数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。


数组定义方式

var  a  = [‘a’,’b’,’c’];

任何类型的数据,都可以放入数组。 对象数组 数组属于一种特殊的对象

console.log(typeof(a))  //object

数组访问 

a[1]   //b   下标为数值  不能用  . 的形式访问

//第二种定义形式

var  arr = [];

arr[‘name’] = ‘liudehua’
arr[1] = ‘hhh’

访问

arr.name  arr[‘name’]    arr[1]

//第三种定义形式

var arr = new Array(‘a’,’b’);


函数

函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。

函数的声明 3种方式    注意函数名区分大小写

第一种 function 命令

function  函数名(){
  //函数体
}

第二种  函数表达式  匿名函数

var  a  = function(){
    //函数体
}

第三种 构造函数
var foo = new Function(
  'return "hello world"'
);
// 等同于
function foo() {
  return 'hello world';
}

函数的调用


函数名();


函数的参数  

调用与定义的参数一一对应

function test(a,b){
    console.log(a+b)
}

test(1,2)

arguments   可以在函数体内部读取所有参数


函数返回值  return


重复声明


如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。



函数名的提升


JavaScript 引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。


function 声明的函数调用可以在在函数前也可以函数后


变量赋值的方式定义的函数必须函数后调用


变量作用域


全局变量    全局作用域


局部变量      局部作用域


全局作用域:函数外部声明的变量就是全局变量(global variable),它可以在函数内部读取。


局部作用域:在函数内部定义的变量,外部无法读取,称为“局部变量”(local variable)。



函数的属性和方法


name 属性    函数的name属性返回函数的名字。


length 属性   函数的length属性返回函数预期传入的参数个数


函数的toString方法返回一个字符串,内容是函数的源码。


封闭函数


封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。


1、一般函数的定义和执行函数

2、封闭函数的定义和执行:(function(){...})();还可以在函数定义前加上"~"或者"!"符号来定义匿名函数。


(function(){
	console.log('hello wrold');
})();

!function(){
	console.log('hello wrold');
}();

~function(){
	console.log('hello wrold');
}();


闭包


闭包(closure)是 Javascript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。


理解闭包,首先必须理解变量作用域。前面提到,JavaScript 有两种作用域:全局作用域和局部作用域。函数内部可以直接读取全局变量。


 闭包就是函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回

function test(){
	var count =1;
	
	function f(){
		count++;
		return count;
	}
	return f;
}

res = test();

console.log(res());
console.log(res());
console.log(res());


运算符


算术运算符


比较运算符


布尔运算符


位运算符


其他运算符


算术运算符


加法运算符:x + y

减法运算符: x - y

乘法运算符: x * y

除法运算符:x / y

指数运算符:x ** y

余数运算符:x % y

自增运算符:++x 或者 x++

自减运算符:--x 或者 x--

数值运算符: +x

负数值运算符:-x


注意:加法运算符 当有一个是字符串时  会执行 字符串的拼接操作   php  .


比较运算符


> 大于运算符

< 小于运算符

<= 小于或等于运算符

>= 大于或等于运算符

== 相等运算符

=== 严格相等运算符

!= 不相等运算符

!== 严格不相等运算符

= 赋值运算


布尔运算符


返回布尔值


取反运算符:!

且运算符:&&

或运算符:||

三元运算符:?:


 undefined  null  false 0  NaN   空字符串(‘’) 取反后 都是true

 

其他运算符


void 关键字 函数


void运算符的作用是执行一个表达式,返回undefined。


逗号运算符


逗号运算符用于对两个表达式求值,并返回后一个表达式的值。



Math 


Math是 JavaScript 的原生对象,提供各种数学功能


Math.abs():绝对值

Math.ceil():向上取整

Math.floor():向下取整

Math.max():最大值

Math.min():最小值

Math.pow():指数运算

Math.sqrt():平方根

Math.log():自然对数

Math.exp():e的指数

Math.round():四舍五入

Math.random():随机数


String


String对象是 JavaScript 原生提供的三个包装对象之一,用来生成字符串对象。


使用方式:  变量名.函数名();


toString()数值转换为字符串  String() 

length//字符串长度  注意没有括号

indexOf(str) //字符串中一个子串第一处出现的索引如果没有匹配项,返回 -1 。

lastIndexOf(str)//字符串中一个子串组后出现的索引如果没有匹配项,返回 -1 。

replace(/str/,str2)//默认替换第一个  全部替换  加 g

trim(str)  //去掉左右空格

toLowerCase()//转小写

toUpperCase()     //转大写

substr(start,length);  //截取字符串

concat(str)   //拼接字符串  

split(“分隔符”)  按指定字符分割(返回值为数组)

match(str)  //匹配字符串  返回匹配成功的字符串



Array  


 数组名.函数名


length   获取数组的长度

toString()  转成字符串

push()   在数组的后面添加元素

pop()   删除数组的最后元素

unshift()  在数组前面添加元素

shift()  在数组前面删除元素

join()   方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回

concat()   用于多个数组的合并

reverse()  用于颠倒排列数组元素

slice()  截取数组

sort()   用字典排序

indexOf()  返回数组值的第一个出现的索引

lastIndexOf()返回数组值的最后出现的索引

filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。



filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。

console.log(arr.filter(function(a){
		return a>6;
}));


some()   every()   返回一个布尔值,表示判断数组成员是否符合某种条件。

var arr = [3,5,8,9];
console.log(arr.some(function(a){
		return a>6;
}));  //true

console.log(arr.every(function(a){
		return a>6;
})); //false


 map方法将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。


循环遍历数组

var arr = [3,5,8,9];
	
arr.map(function(value,index,arr){
         console.log(arr[index])
});
forEach()

arr.forEach(function(a,index){
    console.log(arr[index])
});

for循环遍历数组
for(var i=0;i<arr.length;i++){
        console.log(arr[i]);
}


for...in 循环和数组的遍历


var arr = [3,5,8,9];
arr['name'] = 'asdf';
	
for(var i in arr){
	console.log(arr[i]);
}

   

 Date对象


是 JavaScript 原生的时间库。它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)。


 Date.now方法返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000。

1s = 1000ms

Date.parse方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。


var d = new Date();

console.log(d.getYear()+1900);  //返回距离1900的年数。

console.log(d.getMonth()+1)   //返回月份(0表示1月,11表示12月)。

console.log(d.getDate());  //获取日期

console.log(d.getHours());  //返回小时(0-23)。

console.log(d.getMinutes());//返回分钟(0-59)。

console.log(d.getSeconds());//返回秒(0-59)


JSON


 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式,2001年由 Douglas Crockford 提出,目的是取代繁琐笨重的 XML 格式。


定义形式

["one", "two", "three"]

{ "one": 1, "two": 2, "three": 3 }

{"names": ["张三", "李四"] }

[ { “name”: “张三”}, {“name”: “李四”} ]


复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。


原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null


字符串必须使用双引号表示,不能使用单引号。


对象的键名必须放在双引号里面。


数组或对象最后一个成员的后面,不能加逗号。


JSON.stringify()和JSON.parse()。


JSON.stringify方法用于将一个值转为 JSON 字符串


JSON.parse方法用于将 JSON 字符串转换成对应的值。


正则表达式(regular expression)


是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本



新建正则表达式有两种方法。一种是使用字面量,以斜杠表示开始和结束。


 var regex = /xyz/;


另一种是使用RegExp构造函数。


var regex = new RegExp('xyz’);


推荐第一种


常用方法


test()   回一个布尔值,表示当前模式是否能匹配参数字符串。


exec()  用来返回匹配结果。如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回null。


匹配修饰符


g 修饰符


默认情况下,第一次匹配成功后,正则对象就停止向下匹配了。g修饰符表示全局

var reg = /b/g;

console.log(reg.exec('abbf'));

console.log(reg.exec('abbf'));

console.log(reg.exec('abbf'));


i 修饰符

        

默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写(ignorecase)。


var reg = /b/i;


console.log(reg.exec('B'));


流程控制


顺序结构


选择/分支结构  if  elseif  switch


循环结构for  while  do{}while()


顺序结构 


按照书写顺序来执行,是程序中最基本的流程结构


document.write(“星期一”);

document.write(“星期二”);

document.write(“星期三”);


选择/分支结构 

单分支
if(表达式){
      //表达式真
}

双分支
if(表达式){
     // 表达式真 执行的操作
}else{
     //表达式假的操作
}

多分支
if(表达式){
 // 表达式真 执行的操作
}else if(表达式){
 // 表达式真 执行的操作
}else{
// 表达式假  执行的操作
}
// if也可以嵌套

三元运算符   ? :

表达式?值1:值2

switch选择语句

switch (num) {
  case '1':
    document.write(‘hello world---1');
    break;
  case '2':
    document.write(hello world---2');
    break;
  default:
    document.write(‘meishenmehaoshuode');
}


循环结构


while循环          循环是先判断后执行

do while 循环   是先执行一次再判断


var age=20;

while ( age <= 50 ) {
document.write( age + '没经验!<br/>' );
age++;
}


var age = 58;
do {
    document.write( age + '能领钱!<br/>' );
    age++;
} while(age<=50);


for循环语句  


for(初始;条件;增量){

}


for  in  循环语句 

for(变量 in 对象){

}


当“对象”为数组时,“变量”指的是数组的“索引”;

当“对象”为对象是,“变量”指的是对象的“属性”。


continue 和break


continue   //跳出本次循环,直接进入下次循环 

break       //结束掉整个循环


for (var i=0;i<9;i++){
	if(i==5){
	     continue    // break
	}
	console.log(i);
}


6 条留言此文章没有人评论

给我留言

评论内容