1.var 变量

 <script type="text/javascript">
var a = "hong";
var fun = function () {
var a = "aa";
console.log(a);
}
console.log(a); //hong
fun(); //aa
</script>

有局部变量与全局变量同名,在方法内优先使用局部变量

 <script type="text/javascript">
var a = "hong";
var fun = function () {
a = "aa";
console.log(a);
}
console.log(a); //hong
fun(); //aa
console.log(a); //aa
</script>

可以看出在方法中对全局变量进行了修改

 <script type="text/javascript">
var fun = function () {
a = "aa";
console.log(a);
}
// console.log(a); //hong
fun(); //aa
console.log(a); //aa
</script>

在这里a没有var修饰,它是隐式的全局变量

<script type="text/javascript">
var a = "hongda";
function fun() {
console.log(a);
var a = "aaa";
console.log(a);
}
fun(); //undefined aaa
</script>

在这里要注意var的声明,在方法内部不管在什么地方声明,都跟它们在函数的顶部声明一样

  function fun() {
var a = b = c = ; //这样错误,b,c都是隐式的全局变量了
var aa, bb,
cc = "hongda",
dd = ; //这样是好的
}

查看全局变量与隐式全局变量

 <script type="text/javascript">
var a = "hongda";
b = "bb";
console.log(a); //hongda
console.log(b); //bb
delete (a);
delete (b);
console.log(a); //hongda
console.log(b); //b不存在了,已经被删除了
</script>

在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而全局变量是不能的,但全局变量也是window的属性

为什么隐式全局变量可以被删除,而全局变量不可以被删除?

 <script type="text/javascript">
function f() {
this.aa = "hongda";
}
f.prototype.bb = "bb";
var ff = new f();
console.dir(ff);
delete (ff.aa);
delete (ff.bb);
console.dir(ff);
</script>

可以发现函数内部的aa被删除了

隐式全局变量可以被删除是不是这样的关系,我也不清楚?

js函数的声明:

  function fun() {
console.log("fun");
console.log(typeof fun);
} var f = function () {
console.log("fun2");
} var f2 = function fu() {
console.log("fun3");
console.log(typeof fu);
}
fun();
f();
f2();
console.log(typeof fu);

大概就是这样的三种方式,

第一种,直接声明一个函数

第二种,先声明一个变量f,再声明一个匿名函数,将匿名函数赋值给变量f,赋值以后f的类型才为function

第三种,先声明一个变量f2,再声明一个函数fu,只是这个fu只能在该函数的内部使用,不能在外部使用

2.for循环

<script type="text/javascript">
var array = [, , , , , , , , ];
for (var i = ; i < array.length; i++) {
console.log(i + ":" + array[i]);
}
var obj = { name: "hongda",
age: ,
country: "china",
say:function(){alert("fd");}
}
for (var o in obj) {
console.log(o + ":" + obj[o]);
}
for (var i in array) {
console.log(i + ":" + array[i]);
}
</script>

一般应用时,使用for in 遍历对象内部的属性,使用for()来遍历数组,for in 也可以用来遍历数组,因为数组也是个对象,但for in 遍历对象属性是不一定是顺序的,所以数组还是使用for()好

3.hasOwnProperty

就是去除对象内部从相对应的prototype中获取的属性

http://www.cnblogs.com/hh54188/archive/2013/05/12/3074358.html

http://www.cnblogs.com/TomXu/archive/2011/12/28/2286877.html

最新文章

  1. linux压力测试工具stress
  2. WEB页面中常见的四种控件的必须的测试
  3. Tlist删除技巧
  4. WinPhone学习笔记(二)——页面外观剖析
  5. ahjesus SSHkey登陆linux服务器,无需密码,ubuntu
  6. JavaScript基础12——js的方法重载
  7. $.ajax所犯的错误。success后面不执行
  8. 理解sparse coding
  9. Java SSL/TLS Socket实现
  10. 深入浅出—JAVA(9)
  11. Redis使用记录-相关资料汇总
  12. 轻量级C#网络通信组件StriveEngine —— C/S通信开源demo(附源码)
  13. 树莓派3b+ Ubuntu 16.04 MATA系统 ssh远程登陆后修改主机名、用户密码和用户名
  14. maven下载其源代码包并关联
  15. 安装lrzsz 实现windows与linux之间文件互传
  16. 在平衡树的海洋中畅游(四)——FHQ Treap
  17. xcode 添加target
  18. Linux命令(二十七) 用户组管理命令
  19. java工程师
  20. 20145105 《Java程序设计》第5周学习总结

热门文章

  1. HTML5 桌面提示
  2. 2015 湘潭大学程序设计比赛(Internet)--E题--烦人的异或
  3. Linuxer-&amp;quot;Linux开发人员自己的媒体&amp;quot;第五月稿件和赠书名单
  4. ubuntu 安装ftp,配置,和java调用
  5. html的img标签 强大的title
  6. python3中pymysql模块安装及连接数据库(同‘python安装HTMLTestRunner’)
  7. Thinkpad机器BIOS下清除安全芯片和指纹数据的方法
  8. python 全局变量与局部变量
  9. linux rz sz
  10. OnClick,OnClientClick和OnServerClick的区别