javaScript学习笔记——基本概念

1.javaScript的定义

①是一种专门为网页交互而设计的脚本语言

② 组成:

   

2.<script>元素

3.区分大小写

ECMAScript中的一切(变量、函数名,操作符)都区分大小写;

4.标识符

①第一个字符必须是字母、下划线、$,其他字符可以是字母、下划线、$或数字;

②ECMAScript标识符一般使用驼峰大小写格式,即第一个字母小写,剩下的每个单词的首字母大写;

③关键字是语言保留的,不能用做标识符

5.变量

①ECMAScript的变量是松散类型的(可以用来保存任何类型的数据)

② var s=10;(用var定义的变量是定义该变量作用域的局部变量,这个变量在该作用域执行完毕就会被销毁)

   如果省略var操作符,该变量就成了全局变量,一般不再局部作用域定义全局变量,因为这很难维护;

var 声明的全局变量实际上是定义了一个全局变量的属性,该属性时不可配置的,即,该属性无法通过delete删除,而声明直接赋值的全局变量的属性是可配置的,可以被delete运算符删除,但在严格模式下会报错;

var globalval=1;
function test(){
  localval=2;
}
this.globalval1=3;

delete.globalval;     //false
delete.localval;      //true
delete.globalval1;    //true

6.typeof操作符

      

7.数据类型的分类

8.基本类型和引用类型的区别

① 保存方式不同(基本数据类型保存的是实际值,引用 类型保存的是对象)的引用

②复制变量值存在不同

a.基本类型:

   var num1=5;

   var num2=num1;

基本数据类型的变量值复制,两个变量两个地址,只是值相同,两个变量参与任何操作都互不影响。

b.引用类型:

var obj1=new Object();
var obj2=obj1;
obj1.name="abc";
alert(obj2.name);  //"abc"

因为引用类型实际保存的是一个引用即指针,所以引用类型复制就将存在1地址的指针复制一份,放到一个新地址中,即两个不同的地址存放着相同的指针,这两个指针指向存储在堆中的同一个对象,所以改变其中一个变量,就会影响到另一个变量

传递参数都是按值传递

引用类型保存与复制的是对象的一个指针

a.传递基本数据类型

function addTen(num){
  num+=10;
  return num;
}
var count =20;
var result=addTen(count);
alert(count);//20
alert(result);//30

num实际上是局部变量,num与count互不相识,仅仅是具有相同的值,互不影响;

b.传递引用类型

function setName(obj){
  obj.name="amy";
}
var person =new Object();
setName(person);
alert(person.name);  //"amy"

函数传递的person对象的一个引用(指针),函数是按值传递,但是obj中保存的指针依旧会按引用访问对应的对象,obj和person指向的是同一个对象,所有obj添加属性,person也具有相同的效果;

function setName(obj){
  obj.name="amy";
  obj=new Object();//即使在函数内部修改了参数的值,但原始引用依旧没有变
  obj.name="abc";//重写obj时,该变量中保存的是局部对象的指针,对其进行的属性添加,作用对象是该局部        
                 //对象,当函数执行结束,局部对象立即被销毁
}
var person =new Object();
setName(person);
alert(person.name);  //"amy",证明函数传递的参数即使是引用类型,也是按值传递

9.操作符

10.函数

①ECMAScript中的函数在定义时,不必指定是否有返回值,任何函数在任何时候都可以通过return语句返回要返回的值;函数在执行完return语句之后停止并立即退出,位于rerun之后语句将永远不会执行;

②return语句也可以不带任何返回值,则函数停止后将返回undefined;

③函数不介意传递进来多少个参数,也不在乎参数是什么数据类型,函数体内可以通过arguments对象来访问这个参数数组,使用arguments.length可以确定传进来多少个参数

function doAdd(){
if(arguments.length==1){
  alert(arguments[0]+10);
}else if(argumentslength==2){
  alert(arguments[1]+arguments[0]);
}
}
doAdd(10);  //20
doAdd(30,20);  //50

④没有重载

ECMAScript函数没有签名,因为其参数是由包含0个或多个值的数组来表示的,而没有函数签名,正真的重载是做不到的,

如果定义了两个名字相同的函数,则该名字只属于后定义的函数

⑤有函数名的叫具名函数;没有函数名的叫匿名函数,匿名函数的自调用格式如下:

匿名函数的自调用可以在包含函数创建的时候立即执行

(function (num){
   return num;
})(i);

//<=>
var result=function (num){
   return num;
}(i);

11.执行环境和作用域

执行环境分为全局执行环境和局部执行环境

例子:

function outerFun()
{
 var a =0;
 alert(a);  
}
var a=4;
outerFun();
alert(a);

结果是 0,4 . 因为在函数内部使用了var关键字 维护a的作用域在outFun()内部.

function outerFun()
{
 a =0;
 alert(a);  
}
var a=4;
outerFun();
alert(a);

结果为 0,0。作用域链是描述一种路径的术语,沿着该路径可以确定变量的值 . 当执行a=0时,因为没有使用var关键字,因此赋值操作会沿着作用域链到var a=4; 并改变其值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值