JavaScript笔记(前5章)

var num = (4,1,2,3) //num=3,逗号用于赋值时总是返回最后一个值
typeof null; //"object"

使用严格模式 的形式:在js头部加上 "use strict"

数据的5个基本类型:Null、Undefined、Boolean、Number、String

typeof操作符返回字符串:

"undefined" --如果值未定义

"boolean" 

"string"

"number"

"object" -- 如果这个值是对象或者Null

"function" --

  技巧:函数在JavaScript中是对象,不是一种数据类型,然而函数也有一些特殊的属性,可以通过typeof来区分对象与函数

ECMAScript中所有参数的传递都是值,不可能通过引用传递参数。

第四章 变量、作用域和内存问题

数据类型分为基本类型(5种)和引用类型,只能给引用类型添加动态属性。

对于引用类型,当一个变量复制引用类型的值时,实际上是复制一个指针,这个指针与原来的值指向同一个object。

引用类型的函数参数传递的实际是将这个引用类型值的指针传给函数,在函数内部修改该值时会影响外部的值,例如:

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

typeof 检测基本数据类型

instanceof 检测引用类型的值, 语法: result = variable instanceof constructor

alert (person instanceof Object);
alert (colors instanceof Array); 
alert(pattern instanceof RegExp); // 变量pattern 是RexExp?
基本类型不是对象,如果使用instanceof检测基本类型会返回false


执行环境及作用域

我的理解:首先执行环境(execution context)分为全局环境(浏览器为window)和局部环境(函数),JavaScript不像C或Java使用块作用域。每一个函数都有自己的执行环境,当执行到一个函数时,函数的环境就会被堆入一个环境栈,从而形成一个作用域链。作用域链有个特性是当前函数环境位于作用域链的最前端,在识别变量时只能上搜索。还有一个特性是我自己总结的,就是在定义函数时首先会声明所有函数内部的变量,这就是为什么下面的例子会是”undefined“而不是报错。

if(false){
    var color = "blue";
} 
alert(color); //"undefined"
var a,b;
function setA(x){
    a = x;
}

function setB(x){
  var a = 'a2';
  setA(x);
  b = x;
  alert(a);  //
}
setB('b')
alert(a);  //
var a,b;

function setB(x){
  function setA(x){
      a = x;
  }
  var a = 'a2';
  setA(x);
  b = x;
  alert(a);  //
}
setB('b')
alert(a);  //

第五章 引用类型

Object类型

创建Object实例的方法:

var p = new Object(); //构造函数方法
p.name = 'huanghuiquan'
var p  = {}  //对象字面量表示法
var p2 = {name:"huanghiuquan",age:29}
访问Object的方法:

alert(p.age) ;//点表示法。推荐方法
alert(p['age']); //方括号表示法,注意属性名必须为字符串 ,当属性名包含空格时或者使用变量形式的属性时使用

Array类型

创建array的方法:

构造函数方法

var arr = new Array();
var arr = new Array(4);//创建length为4的数组,元素为4个undefined
var arr = new Array(4,5);//创建length为2的数组
var arr = new Array('4'); //创建length为1的数组
var arr = Array(); // 省略new

字面量方法

var arr = [1,'2']

访问数组:

var arr = ["a", 'b'];
alert(arr[1]); // b

arr.length = 1;
alert(arr.length); //1
alert(arr[1]);// undefined

arr[3] = 'c'; //arr 的元素为a,undefined,undefined, c
 
数组的方法:

栈方法--push(), pop();

队列方法--shift(), push();

反向队列方法 -- unshift(), pop();
重排序方法--reverse(), sort();

contact()方法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值