DOMContentLoaded事件触发时机,即dom tree完成但页面未必渲染完毕。
 
var a = [1,2,3,4];
var length = a.length;
alert((length - 1 in a));     返回true
 
当一个函数没有明确返回值的时候,实际上它返回 undifined 
当函数参数遗漏没有赋值时,该值将传入 undefined ,超过函数定义的参数数量以后的值会被忽视
可以传入任意数量参数,然后从arguments获取
 
JavaScript 获取 float,因为float是保留关键字,所以:
IE浏览器:
obj.style.styleFloat = "left";
其他浏览器:
obj.style.cssFloat = "left";
 

Array.prototype.slice.call(arguments,1)该语句涉及两个知识点:

arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上以数组形式来表示,但实际上没有原生数组slice的功能,因为它不是Array()的实例,这里使用call方法算是对arguments对象不完整数组功能的修正。

Array.prototype.slice.call 其实是对slice方法进行的静态调用。
[].slice(begin,end);
在JS中,[]就是一个数组对象,在执行时,先会建立对象,再执行自身对象下的slice方法,对这个数组进行切割。
 
slice()传入的长度为负数的时候,从后面开始算起:
"234567".slice(0,-2)          返回2345
注意:substring比 上面负slice和正则表达式来的快
 
简单值对象
当处于读取模式时,会实例化对应的对象,例如String,然后就可以使用上面的方法。如果是作为简单值调用的时候,实例化的对象就会被销毁。
 
typeof用来判断简单值(boolean,number,string),instanceof用来判断引用类型对象
 
如果代码有错误接下来的无法执行,而之前执行的代码(包括使用 window.setTimeout() 延迟执行的代码)依然能够使用。
 
null == undefined 虽然都输出true,但意义不同,undefined 表示定义了变量,但没有初始化变量,Null 代表一个不存在的对象
 
window.onload = fucntion() {}; == <body onload="func()">
因为 load 事件是发生在 window 对象上,但是在html 上没有代表 window 的标签 ,所以所以放到 body 元素上触发
 
arguments 提供 一个叫 arguments.callee 的属性,指向目前的函数,匿名函数的话可以用它来指向该函数
函数也是对象,因此可以 arguments.callee.something 把数据存储到该函数里
 
Number,String等简单值类似对象,因为它们有方法,但是这些方法不能改变,所以它们不是对象
 
var o = {};
o.x = new Object();
delete o.x;     // 上一行new的Object对象依然存在
o.x;            // undefined,o的名为x的属性被删除了
 
 
对象的属性在ECMAscript中是无序的,所以for in 循环返回的队列也是无法预测的,全部属性值都会被返回,但是返回的顺序各浏览器可能不同
 
元素的children属性只返回nodeType为element的子节点,childNodes会返回所有类型的。
 
ie浏览器会报告document ready状态,即使body元素还没有被创建,所以zepto在检测ready的时候添加了 && document.body是否存在body :
if (readyRE.test(document.readyState) && document.body) callback($)
 
innerText , innerHTML 和 outerText , outerHTML 相对应,但是outer 是用新对象替换掉原来的对象,它们也可以获取元素的内容,outerHTML 返回的值包括对象自己
 
当一个元素设置了margin之后,safari会自动把offsetLeft设为与marginLeft相等,offsetTop也一样
 
数组  length  不一定等于数组中项目的个数,它等于最高索引加1
var  arr  =  [1,2,3];
arr[99] = 4;                arr.length 就等于100了! 
 
在javascript中 无论是整数还是带小数(float)的都是存储在同一种数据类型里
 
switch(1+3){
case 2+2:
alert();                          switch里的值 和 case 在比较时使用 === 模式
break;
}
 
注意区别 没有定义的变量 和 定义了没有初始化的变量
var a; typeof a; 输出undefined
typeof b; 输出 b is not defined
 
检测是否支持:
var isSupported = document.implementation.hasFeature(“HTMLEvents”, “2.0”);        
 
if(a){ alert(); } 可以用 a && alert() 替代,&& 和 || 可以有更多灵活使用
 
通常在框架里下划线的变量方法都是内部使用的
 
不应该把undefined赋给变量,因为undefined主要是拿来和数据做比较,直到ECMA-262才被添加进来,在第三版中用来和null做区别
 
Typeof 后面跟一个创建了但没有初始化的值和完全没有创建的值返回的结果都是一样的undefined,所以创建了一个值之后最好初始化,用来区分。
 
write()  writeln() 应该在页面完全加载前调用, 在之后加载内容会清空,它会自动触发document.open()

 
 
replace() 定位时会移除掉页面包含的脚本,所以用它定位就没办法前进后退
location.replace("http://www.example.com/");
 
location 对象同时是window 和 document 的对象 因此:
window.location  === document.location  完全可以调换
 

javascript 备忘 细节 相关的更多相关文章

  1. Javascript备忘模式

    使用备忘模式,利用了函数的自定义属性,先看一个例子 var test = function (){} test.myAttr = "attr"; 这样,就给test加上了一个自定义 ...

  2. Javascript备忘复习笔记2

    一.函数与形参 1.函数 function abs(x) { if (x >= 0) { return x; } else { return -x; } } alert(abs(-10)); 2 ...

  3. Javascript备忘

    js输出对象类型: Object.prototype.toString.apply(s) 设置单行点击效果: obj.style.background = "#efefef";se ...

  4. Javascript 备忘

    1遍历所有属性 var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=tx ...

  5. Javascript备忘复习笔记1

    一.字符串操作 1.大小写 var s = "hello"; undefined g = s.toUpperCase(); "HELLO" g; "H ...

  6. [整理记录备忘] Docker相关

    docker安装 linux上安装Docker(非常简单的安装方法) https://blog.csdn.net/qq_36892341/article/details/73918672 修改dock ...

  7. php 相关模块备忘

    在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  8. [备忘]Asp.net MVC 将服务端Model传递的对象转为客户端javascript对象

    <script type="text/javascript"> var jsObject = @Html.Raw(Json.Encode(Model.Objects)) ...

  9. [原]TCP/UDP使用细节备忘

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

随机推荐

  1. Longge's problem poj2480 欧拉函数,gcd

    Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6918   Accepted: 2234 ...

  2. 关于form表单或者Ajax向后台发送数据时,数据格式的探究

    最近在做一个资产管理系统项目,其中有一个部分是客户端向服务端发送采集到的数据的,服务端是Django写的,客户端需要用rrequests模块模拟发送请求 假设发送的数据是这样的: data = {'s ...

  3. 课程作业02(关于Java的几点讨论)

    ---恢复内容开始--- 1.一个Java类文件中真的只能有一个公有类吗? public class Test { public static void main(String[] args) { } ...

  4. .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用

    一.Linux安装MySQL (1)下载安装包:https://dev.mysql.com/downloads/mysql/ (2)解压并安装 命令:tar zxvf 文件名 解压完成之后,重名一下文 ...

  5. python之路第五篇之递归(进阶篇:续:经典例子剖析)

    递归 在函数内部,可以调用其他函数; 如果一个函数在内部调用自身本身,这个函数就是递归函数. 例如,我们来计算阶乘: n! = 1 x 2 x 3 x ... x n, 用函数f1(n)表示,可以看出 ...

  6. 用MXNet实现mnist的生成对抗网络(GAN)

    用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...

  7. jQuery和js获取select元素的选中项value?

    1.jQuery方式获取:$("#test").val(); 2.js方式获取:document.getElementById("test").value;

  8. python netifaces模块

    简介 在Linux系统中,我们可以通过ifconfig,route等shell命令来查看系统接口配置,网关和路由等信息.通过shell的正则表达式功能,通过系列复杂操作,我们可以从字符串中提取出相关的 ...

  9. Jquery实现数据双向绑定(赋值和取值),类似AngularJS

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  10. 完整Log4Net配置信息

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...