路冉的JavaScript学习笔记-2015年2月5日

1.为Js原始值创建临时对象,并进行属性引用

var s="text";
s.len=4;//这里Js调用new String(s)的方法创建了一个临时对象,用来属性引用
console.log("s.len属性的值为:"+s.len);//属性引用结束后销毁临时对象,因此s.len的值为undefined

运行结果为:

s.len属性的值为:undefined

2.Js原始值的属性不可以修改,而对象的属性可以修改

var o={x:1};
o.x=2;//修改对象属性
o.y=3;//增加一个属性
console.log(‘o.x的值为‘+o.x+‘; o.y的值为:‘+o.y);

var a=[1,2,3,4];//数组也是一类对象
a[4]=5;//给数组增加一个新元素
console.log(‘数组a的第五个元素为:‘+a[4]);

运行结果为:

o.x的值为2; o.y的值为:3

数组a的第五个元素为:5

3.原始值与包装对象的区别

var s="test",n=1,b=true;
var S=new String(s);
var N=new String(n);
var B=new String(b);//使用构造函数显式创建包装对象

console.log(‘s==S的值为‘+(s==S));
console.log(‘s===S的值为‘+(s===S));//在‘===‘条件下,原始值与其包装对象不相等
console.log(‘因为s的类型为‘+typeof(s)+‘; 而S的类型为:‘+typeof(S));//使用typeof()测试对象属性

运行结果为:

s==S的值为true
s===S的值为false
因为s的类型为string; 而S的类型为:object

4.对象的比较是引用比较,引用仅引用实际对象的地址,未创建新对象

var o={x:1},p={x:1};
console.log(‘o与p相等:‘+(o===p));//并未引用同一个对象

运行结果为:

o与p相等:false

5.引用同一个对象进行比较

var a=[],b=a;
b[0]=1;
console.log(‘a[0]的值为‘+a[0]);
console.log(‘a与b相等:‘+(a===b));

运行结果为:

a[0]的值为1
a与b相等:true

6.复制对象,必须复制该对象的每一个元素,不能采用引用的方式

var c=[‘a‘,‘b‘,‘c‘];
var d=[];
for(var i=0;i<c.length;i++){
d[i]=c[i];
}
console.log(‘d的值为:‘+d);

运行结果为:

d的值为:a,b,c

7.未赋初始值的变量声明,变量值为undefined

var m;
console.log(‘m的值为:‘+m);

运行结果为:

m的值为:undefined

8.JavaScript的变量可以是任何类型

var n=3;
console.log(‘n的类型为‘+typeof(n));
n=‘matter‘;
console.log(‘重新赋值后,n的类型为‘+typeof(n));

运行结果为:

n的类型为number
重新赋值后,n的类型为string

9.全局变量具有全局作用域,函数体内声明的变量只拥有函数体内作用域;全局变量可能被同名的局部变量覆盖,见下例:

var scope=‘global‘;
function checkscope(){
console.log(‘scope的值为‘+scope);//这里的值为undefined
var scope=‘local‘;//重新初始化scope
console.log(‘scope的值为‘+scope);
}
checkscope();

运行结果为:

scope的值为undefined
scope的值为local

10.嵌套函数中的变量作用域

var scope=‘global‘;
function checkscope02(){
var scope=‘local‘;
function nested(){
var scope=‘nested scope‘;//最里层修改scope的值,作用在整个checkscope02()函数当中,而不仅仅是nested()函数
console.log(‘scope的值为‘+scope);
}
return nested();//返回函数即执行该函数
}
checkscope02();

运行结果为:

scope的值为nested scope

11.JavaScript没有块级作用域:花括号外,函数体内的变量都会作用于整个函数

function test(g){
var i=0
if(g==‘object‘){
var j=0;
for(var k=0;k<3;k++){
console.log(‘在for循环体内,第‘+k+‘次打印k的结果为:‘+k);
}
console.log(‘在for循环体外,第‘+k+‘次打印k的结果为:‘+k);
}
console.log(‘在if循环体外,j的值为:‘+j);
}
test(‘object‘);

运行结果为:

在for循环体内,第0次打印k的结果为:0
在for循环体内,第1次打印k的结果为:1
在for循环体内,第2次打印k的结果为:2
在for循环体外,第3次打印k的结果为:3
在if循环体外,j的值为:0

JavaScript解析变量时,会在作用域链中查找,该链为对象列表。如果第一个对象不存在名为x的属性,会继续查找链中的第二个对象。如果都找不到会抛出ReferenceError异常。

【JavaScript语言字典 路冉编辑20150205Ver1.0.0】

时间: 2024-10-08 08:52:54

路冉的JavaScript学习笔记-2015年2月5日的相关文章

路冉的JavaScript学习笔记-2015年1月23日

1.JavaScript的数据类型 A.原始类型:包含数值.字符串.布尔值.空值(null)和未定义值(undefined). Js原始类型均为不可改变类型.对不可变类型调用任何自带方法都不会改变原始值,除非重新赋值.例如: var s="Hello,World"; s.toUpperCase();//将字串全部大写 console.log("s的值为:"+s); 在Firefox Firebug控制台内执行结果为: B.对象类型:对象为Js类的实例,使用“构造函数

SQL中的引号--学习笔记-2014年12月10日

上午跟着教程写代码的时候,因为SQL语句中多用了''导致整个类的方法不能用.debug花了很长时间,我的方法是整个逻辑流程倒推分段的方法,采用手动赋值的方式检验每个object的method是否正常工作,到最后一直试到SQL的cmd中,这才发现原来直接用SQL语句在cmd中依然返回的是empty set,最后才发现是自己给column也加上了引号. debug是很花时间的,而且有时会让人很气馁,不过从中也是可以学到东西的,最起码这以后我记住了不能在SQL的column中添加引号了.

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

javascript学习笔记---ECMAScriptECMAScript 对象----修改对象

通过使用 ECMAScript,不仅可以创建对象,还可以修改已有对象的行为. prototype 属性不仅可以定义构造函数的属性和方法,还可以为本地对象添加属性和方法. 创建新方法 通过已有的方法创建新方法Number.prototype.toHexString = function() { return this.toString(16); }; 在此环境中,关键字 this 指向 Number 的实例,因此可完全访问 Number 的所有方法.有了这段代码,可实现下面的操作: var iNu

javascript学习笔记——如何修改&lt;a href=&quot;#&quot;&gt;url name&lt;/a&gt;

0.前言 使用了一段时间javascript,再花了点时间学习了jquery,但是总是感觉自己很"迷糊",例如<a href="#">url name</a>中,如果修改href中的"#"应如何编写代码,如果修改url name应如何编写代码.再加上javascript和jquery操作方法略有不同,所以我就更"迷糊"了. [说明] 曾经使用关键词--"innerHTML和value区别&qu

javascript学习笔记---ECMAScript语法(辅助)

1.区分大小写. test与Test变量是两个不同的变量 2.变量是弱变量. 与C,java等等语言变量不是很一样. 如下java代码 ? 1 2 3 4 int i =0; //再次赋值 i = 10;//ok i = "hello";//wrong 类型不匹配 javascript ? 1 2 3 4 var i = 9; //再次赋值 i = 10;//ok i = "hello";//ok 但是不建议这么干,如此会给开发造成干扰,不明确变量的类型.(变量命名