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

JavaScript 小知识的更多相关文章

  1. JavaScript小知识

    1.<script>标签的出现使整个页面因脚本解析.运行而出现等待: 2.合并脚本,每个 HTTP请求都会产生额外的性能负担,下载一 个 100KB 的文件比下载四个 25KB的文件要快: ...

  2. javascript小知识1 this的用法

    函数的应用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  5. s性能优化方面的小知识

    总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...

  6. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  7. 七个开法者经常忽略或误用的JavaScript基本知识

    七个开法者经常忽略或误用的JavaScript基本知识 翻译自 http://tech.pro/tutorial/1453/7-javascript-basics-many-developers-ar ...

  8. JS的基本类型(小知识)

    一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...

  9. JS控制语句 编程练习 学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。

    编程练习 在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下 ...

随机推荐

  1. Mybatis插入数据后返回主键id

    有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段. 单条记录插入并返回 First, if your databas ...

  2. android(七)Looper Handler分析

    一.总结 Looper有一个MessageQueue,用于封装消息循环.   Handler封装了消息投递,消息处理等的辅助类 二.分析 1.从Looper的用法开始分析 class LooperTh ...

  3. [py]监控内存并出图

    监控内存出图 先将内存数据搞到数据库 已使用内存算法 used = int(total) - int(free) - int(butffers) - int(cache) pymysql模块使用 db ...

  4. hdu1181 (变形课)简单地dfs

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/F Description 呃......变形课上Harr ...

  5. Andrew Ng-ML-第十八章-大规模机器学习

    1.学习大数据集 图1.学习大数据集 当数据集量为m=1亿时,进行梯度下降将会花费较大时间. 可以使用小量数据集进行训练,然后得出学习曲线. 左图是高方差,右图是高偏差. 总之是要通过高效的学习算法来 ...

  6. PAT 1020 Tree Traversals[二叉树遍历]

    1020 Tree Traversals (25)(25 分) Suppose that all the keys in a binary tree are distinct positive int ...

  7. [LeetCode] 796. Rotate String_Easy **KMP

    We are given two strings, A and B. A shift on A consists of taking string A and moving the leftmost ...

  8. Oracle业务用户密码过期问题的解决

    实验环境:Oracle 11.2.0.4 如果DBA不知道业务用户密码,当业务密码过期,应用要求DBA帮忙重设为原来的密码. 1.查询业务用户密码 从user$查到hash加密过的值: select ...

  9. C++Builder6.0 新建和打开项目软件死机

    大清早上班打开C++Builder6.0软件,打开项目却卡死,甚是奇怪,然后尝试新建项目也同样卡死.尝试打开一个CPP文件,可以打开,再尝试打开项目.bpr文件,便打开了.至于原因为什么,那就不得而知 ...

  10. How To Join XLA_AE_HEADERS and RCV_TRANSACTIONS(子分类账到事务处理追溯)

    Applies to:   Oracle Inventory Management - Version: 12.0.6<max_ver> and later   [Release: 12 ...