`
zhijieqing
  • 浏览: 4218 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

js笔记1

阅读更多
1、不使用var创建的变量,是隐含的全局变量,尽管它是在函数内部创建的,可以使用delete操作符删除。这表明隐含全局变量严格来讲不是真正的变量,而是全局对象的属性,属性可删除。
(function(){
 global_var=3;
}())
alert(global_var);//alert 3


2、javascript允许在函数的任何地方声明多个变量,无论在哪声明,效果都等于在函数顶部进行声明。这就是所谓的“提升”。
myname="global";
function func(){
   alert(myname);//“undefined”
    var myname="local";
   alert(myname);//局部变量
}


3、for循环经常用在遍历数组或者类数组对象。
建议使用以下格式:
var i,marry=[];
for ( i = marry.length; i--;){
    //do something
}

  • 使用最少的变量
  • 逐步减至0,通常更快,因为同0比较比同数组长度,或者非0数组比较更有效率


4、for-in 循环
通常用于遍历非数组对象,技术上来说也可以用于遍历数组(在javascript中,数组也是对象)。
   当遍历对象属性来过滤遇到原型链的属性时,使用hasOwnProperty()方法。

5、隐式类型转换应该避免使用
javascript在使用比较语句时会执行隐式类型转换,这也是为什么执行 false==0或者""==0这类比较语句后悔返回true;
var zero=0;
if(zero===false){
//执行严格的等价比较,代码未执行
}
if(zero==false){
//隐式类型转换,这块代码会被执行
}


6、避免使用eval()
eval()可以将任意字符串当做一个javascript代码来执行。如果代码是运行时动态生成的,建议用其他方法来替代。

//不建议
var property="name";
alert(eval("obj."+property));

//建议
var property="name";
alert(obj[property]);

//不建议
setTimeout("myFunc()", 1000);

//建议
setTimeout(myFunc, 1000);



如果一定要使用eval(),可以考虑使用new Function()来替代eval().
好处:new Functon()中的代码在局部函数中运行,任何采用var定义的变量都不会自动成为全局变量。
也可以将eval调用封装到一个即时函数中。
var jsstring="var un=1;console.log(un);";
eval(jsstring);//un全局变量

jsstring="var deux=2;console.log(deux);";
new Function(jstring)());//Function与new Function是一样的。deux局部变量

jsstring="var trois=3;console.log(trois);";
(function(){
    eval(jsstring);
}());//即时函数,trois局部变量


另一个new Functon()和eval()的区别在于eval()会影响到作用域链,而无论在哪执行Function()它都仅仅能看到全剧作用域。
(function(){
    var local=1;
    eval("local=3;console.log(local);");// logs 3
    console.log(local);//logs 3
}());

(function(){
    var local=1;
    Function("console.log(local);")();//logs undefined
}());


7、使用parseInt()的数值约定
parseInt()最好加上进制参数,parseInt("12",10);
另一个将字符串转换为数值的方法是:
   +"08"; //结果是8
   Number("08");//结果是8
这种方法通常会比parseInt()快很多,parseInt()是解析不是转换。
但如果输入"08  hello",除了parseInt()其他方法都会失败并返回NaN。

8、检查是否数组
可以使用Array.isArray(arg);
如果不能用Array.isArray()可以使用如下形式进行检查
if(typeof Array.isArray === "undefined"){
    Array.isArray=function(arg){
        return Object.prototype.toString.call(arg)==='[object Array]';
    };
}
分享到:
评论

相关推荐

    狂神说系列 JavaScript笔记

    【狂神说系列 JavaScript笔记】是一份全面且深入的JavaScript学习资源,旨在帮助开发者和初学者深入理解这门广泛应用于Web开发的脚本语言。这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    李立超JavaScript基础篇笔记

    JavaScript,简称JS,是由Brendan Eich在1995年创造的一种高级编程语言,最初目的是为了增强网页的交互性,特别是在前端进行表单验证。JavaScript不是Java的子集,两者之间没有直接关联。JS起初名为LiveScript,但在...

    javascript笔记 javascript笔记

    - **解释:** 这段代码会引入名为`java.js`的外部JavaScript文件。例如,在`java.js`文件中可以写入: ```javascript document.write("Hello World!"); ``` ### 组合使用JavaScript和HTML 通过组合使用...

    js笔记js笔记js笔记js笔记

    js笔记js笔记js笔记js笔记

    黑马JavaScript笔记二.md

    黑马JavaScript笔记二.md

    韩顺平html+css+js之javascript笔记

    ### 韩顺平html+css+js之javascript笔记 #### Javascript基础知识概览 ##### JavaScript在Web开发中的角色 JavaScript是一种被广泛应用于Web开发的脚本语言,它不能单独运行,而是与HTML、JSP、PHP、ASP.NET等...

    js菜鸟快速学习笔记总结

    js学习中的重要笔记,非常适合菜鸟快速入门,看完即会使用js!

    html+js视频笔记

    在 JavaScript 中,变量的定义使用 var 关键字,例如:`var num1=1;`。变量的数据类型是由 JS 引擎决定的,JS 是弱数据类型语言。在 JS 中,变量的类型可以通过 typeof 运算符来查看。例如:`window.alert("num1 是...

    js笔记.md

    js笔记.md

    Cocos Creator笔记

    一、JavaScript笔记 1. JavaScript基础:Cocos Creator主要使用JavaScript进行游戏逻辑编写,所以对JS的基本语法、变量、数据类型、控制结构(如if/else,for,while等)、函数以及对象的理解至关重要。 2. 面向对象...

    传智播客JS笔记

    "传智播客JS笔记"提供了一套全面且易于理解的学习资源,特别适合初学者掌握JavaScript的基础和核心概念。以下是对笔记中可能包含的重要知识点的详细解释: 1. **变量与数据类型**:JavaScript 支持动态数据类型,这...

    前端学习笔记-黑马程序员JS

    "前端学习笔记-黑马程序员JS" 本资源主要介绍了 JavaScript 的基本概念和语法,包括变量、数据类型、运算符、流程控制、数组、函数、对象、内置对象等知识点。 变量 在 JavaScript 中,变量可以在三种位置书写:...

    html+css+javascript笔记完整版

    "html+css+javascript笔记完整版"是一份全面的前端学习资源,涵盖了从基础到进阶的HTML、CSS和JavaScript知识。通过深入学习,你可以掌握创建交互式、响应式网页所需的所有技能,并为进一步探索前端开发的广阔领域...

    黑马JavaScript笔记一.md

    黑马JavaScript笔记一.md

    菜鸟的Javascript笔记.rar

    1~20节讲述javascript JavaScript还有什么内容? 这个菜鸟的笔记里面没有谈到JavaScript中的对象,比如说时间对象和字符串对象,这些内容可以在“菜鸟的JavaScript对象笔记”中找到。不过因为小菜鸟个人认为...

    html css js 学习笔记.zip

    html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习...

    javascript笔记

    javascript入门笔记包括javascript简介、javascript语法、javascript流程控制、函数、数组等

    js课程笔记

    javascript入门课程笔记,简单易懂,适合刚刚开始学习的小白

Global site tag (gtag.js) - Google Analytics