笔记整理-JS心得

1、推荐写JS时,写外部的JS文件,由src=“xxx.js”引入。这样有较高的维护性,可缓存(加载一次,无需加载),方便之后的扩展。特别的:<script />的写法不可用,用了src的,里面不能加代码。

2、一般使用情况是将<script>放在<head>之间,<title>下面,这里一般也会放css,如果需要在页面效果呈现后加载,可以放在<body>后面。

3、当浏览器禁用JavaScript时,可以采用:

<noscript>本站必须启用JavaScript</noscript>
以此来提醒用户启用,同时,如果启用了,则不显示该文字。

4、JS区分大小写,标识符组成开头有:字母(注意大小写)、_、$,其他组成是:字母、_、$、数字,不能把关键字,保留字:true、false、null作为标识符。

5、关键字:程序中已经开始使用的字符;保留字:之后可能会成为关键字,不建议设置为变量。

6、var 申明的变量,可以同时改变不同类型的量,但是不推荐这样使用,会带来后期维护的困难,同时性能也没有得到提高。每申明一个变量就初始化,以避免不必要的麻烦。以下是各种初始化的值:

var box = null; //Object
var box = ''; //String
var box = 0; //Number
var box = false; //boolean,也可用 true 初始化;

7、不加var创建的变量有特别作用,使用时需要注意,这可能会引起调用该变量时,得到的不是自己想要的数据。

8、var box = {}; 表示创建了一个名为box的,空的对象,里面没东西,而空对象表示没有创建,就是一个null。要创建空的对象,还可以用: var box = new Object();

9、typeof 可以操作变量,也可以操作字面量。

10、如果想知道一个数值是否超过范围,可用 isFinite(xxx)。用 isNaN(xxx) 可以判断是不是NaN。处理整数时,常用的是 parseInt() 。处理字符串一般是用 toString() ,可以把值转换为字符串,如:

var box = 10;
alert(box.toString(8)); //'12'

可以转为 ‘ ’ 下面的八进制数。另外,可以用 String() 强制转换。

11、JavaScript的内部转换都是在底层运行的,不需要转型转过来之后进行运算。

12、new可以用于创建对象,可以是 Object、Number、String等,不过只有 Object 比较常用。例:

var box = new Number(5);

13、function 必须被调用才能够执行。为避免传参时未定义,可以采用 arguements 的方式,实现动态加载。同时,function 不具备重载功能,后一个函数(同名)会覆盖前面的函数。

14、argument.callee 是JS中调用自身函数的一个方法,适合于使用递归的地方。

15、window 是JS中最大的对象,是最外围的对象,直接的 this 就当前的 window 。apply、call 可以用于冒充函数来传参,这样可以扩充作用域,对象不需要与方法发生任何耦合(耦合,指相互关联,扩展和维护时会发生连锁反应)关系。实例:

function sum(a, b) {
    return a + b;
}

function sum_1(a ,b) {
    return sum.apply(this, [a, b]);
}

function sum_2(a, b) {
    return sum.apply(this,argument);
}

function sum_3(a, b) {
    return sum.call(this,a,b); // call 只是传递参数与 apply 不同,其他一样
}

16、JS中的基本类型,相互传值,只是一种copy保持独立,相互间不会影响。但是用到object时,这种传递是对指针进行操作,一个改变了内容,所有指向同一个内存块的,其内容都会改变。

17、 编码(一般而言针对中文字符等,由 JS 的中的编码功能,转为浏览器可以识别的UTF­8)和解码是成对的,编码后要记着解码,有两种编码方式,如下:

encodeURI();­->decodeURI();
encodeURIComponnet();­->decodeURIComponent();

18、eval() 方法,功能十分强大,主要担当字符串解析器的作用,只接受一个参数,且该参数是要执行的 JS 代码的字符串,使用时,要注意尽量避免在用户输入数据处用,容易产生代码注入。

19、 单独的匿名函数无法运行、调用。可以将匿名函数赋值给变量,从而可以运行调用。也可以自我执行,(匿名函数)(); 就可以自我执行了。

20、open() 的方式第一个参数是要去的URL,第二个则是要给定一个名字,固定这个窗口,第三个参数是各种字符串,控制打开窗口的大小。

21、location 中,采用 replace 跳转,可以不产生历史痕迹。assign 跳转,有历史痕迹。

22、<script> 前置的话,利用 onload 事件加载,可以使网页加载完毕后执行。

23、用 getAttribute()可以获取属性值,不同于直接获取属性值的方法,可以有效的减少浏览器兼容性的问题,但是有时也不一定比直接获取属性值的方便,不推荐使用 setAttribute(),removeAttribute() 。

24、文本节点不等于文本内容,想要获取内容,可以使用 innerHTML ,要注意使用使用

innerHTML 的话,是获得父节点下的全部内容,如果已经在某个节点,要使用 nodeValue 。例:

document.childNodes[0].nodeValue; // 有效可以使用
document.childNodes[0].innerHTML; // 无效不可使用

25、注意没用到的脚本文件(指 .js)不要随意的加入,会导致页面加载变慢。为避免这一情况,可以尝试再其他 .js 文件中加个 if 判断或者全部写成一个函数(可以加载多个脚本),判断是否执行该脚本。但在其他.js 中也要注意语序问题,避免不去执行该脚本。添加动态的样式也是如此。实践中需要注意浏览器兼容的问题。

26、 Json 简单来说,可以理解为字符串,属于一种键值对,Json 对象和数组,比普通的对象和数组少了分号,少了变量赋值,而且本身一个个是字符串表示,Json 串要注意加上引号(理论上是单引号,可以参考自己所在单位/公司的编码规范)。注意 Json 中的键值对的键都是用双引号。

27、浏览器兼容问题不可忽略,所以在具体开发过程中,要注意浏览器兼容问题。测试时,可以使用相关的软件(IETester等)进行兼容测试。

28、 判断undefined,可以参考下例:

var box = undefined;
if (typeof(box) == "undefined") {
    alert("undefined");
}
typeof 返回的是字符串,有六种可

能:"number"、"string"、"boolean"、"object"、"function"、"undefined"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值