路冉的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
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,原因是函数体内的scope变量覆盖了全局变量,但是只有当执行到局部var语句的时候scope才会被赋值
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】
路冉的JavaScript学习笔记-2015年2月5日的更多相关文章
- 路冉的JavaScript学习笔记-2015年1月23日
1.JavaScript的数据类型 A.原始类型:包含数值.字符串.布尔值.空值(null)和未定义值(undefined). Js原始类型均为不可改变类型.对不可变类型调用任何自带方法都不会改变原始 ...
- JavaScript学习笔记[0]
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
随机推荐
- django的url的name参数的意义(转发)
http://bio.rusaer.com/archives/288 Django一个比较隐含的函数url 阅读量(5010) | 发表 于 2010-03-09 14:26:18 Djang ...
- ZOJ 3705 Applications
点我看题目 题意 : 真是一道又臭又长的模拟题啊,不过比赛的时候没看,赛完了补的. 给你N个候选人,让你从中选M个候选人,根据四个大规则来确定每个人的分数,然后选分数前M个人的输出. 1.在MOJ上做 ...
- 练习-libev和pyev示例
事件循环,IO复用,还是理解深刻一点好. 比较LIBEV和PYEV,发现PYTHON库只是对LIBEV作了简单的语法转换. 到了这个层次,就一个字:DIAO!!! libev的C版: #include ...
- TCP 协议如何保证可靠传输
一.综述 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传. 2.数据校验 3.数据合理分片和排序: UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层 ...
- Android fragment 回调函数改进
由于fragment的onResume()等回调的调用时机与Activity不一样,导致用起来比较麻烦,所以我重新封装了一下回调函数,十分简单. 使用时只需要继承此基类,使用onFragmentXXX ...
- 【原创】FPGA开发手记(一) UART接口
以下内容均以Xilinx的Nexys3作为开发板 1. UART简介 UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串 ...
- Form – 保存自動關閉當前窗口
FAQ: 在BUTTON的触发器中,写如下代码, commit_form; go_bloack('你想显示的那个window的block'); --或者写 show_view('你要显示的canvas ...
- BZOJ_1601_[Usaco2008_Oct]_灌水_(最小生成树_Kruskal)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1601 有\(n\)个田地需要灌溉,每个田地可以自己引水,花费为\(w[i]\),或者连接其他被 ...
- asp.net 使用 MongoDB 初体验
首先:驱动 如果asp.net 想使用MongoDB,.net没有自带的链接类.得用第三方或官方的链接类. 当然有很多种驱动,我就不一一介绍了. 今天我就介绍一个我比较常用的驱动-----MongoD ...
- HDU4027 Can you answer these queries? 线段树
思路:http://www.cnblogs.com/gufeiyang/p/4182565.html 写写线段树 #include <stdio.h> #include <strin ...