PPK谈JS笔记第一弹
以下内容是读书笔记,再一次温习JS好书:PPK谈JS
window.load=initializePage
addEventSimple('window','load',function(){})
load事件在页面被完成加载时触发,显然这正是我们初始化脚本所需要的。
问题是如果同时批量初始化,可能会发生替换,最后的赋值会替换前面的。
js
变量名,方法名等区分大小写
使用分号作为语句分隔符
注释是// /**/
代码块使用{}
undefined null
undefined:
你访问了一个对象不存在的属性或方法,
你访问一个没有赋值的变量
显示对象的数据类型:typeof
NaN not a number 表示非数字值
发生在试图把一个非数字的对象(字符串)转为转成数字的时候
JS处理字符串连接的优先级高于数学求和。
= == ===
== 比较运算符 返回布尔值 true or false
if(4)...
除了0和NaN之外的其他数字都转化为了true
=== 严格比较运算符
要求比较的两个对象值相等,数据类型也相同时才返回true
== 表示两个对象的值相等,数据类型可能不相同,如一个是数字一个是字符串
==== 表示丙个对象的是否是同一个, 要求数据类型相同,而且值也相同
变量就是保存值的容器
JS开发中习惯以驼峰命名格式来命名较长的变量或函数名,因为这样更容易阅读。
名字以小写字符开头,但是接着每一个新单词的首字母都使用大写。
W3C DOM使用相同的命名约定,如getElementById/TagName
优秀的编程实践是尽可能地使用局部变量,这样可以防止变量之间相互干扰。即使他们拥有相同的名字。
在函数体中使用VAR来声明变量,或者作为参数变量在函数定义中出现的变量都是局部变量,
其他的任何方式声明的变量都是全局变量。
局部变量和全局变量的优先级呢?在函数中,局部变量的优先级高于全局变量
注意在JS中小数的运算有精度有问题,请注意,如简单的2.1*3并不是6.6,而是还有后缀,
所以需要使用(2.1*3).toFixed(1))来将数字转为拥有固定小数位数的字符串。
使用Math.round() Math.floor() Math.random 生成一个0到1之间的随机数。
parseInt(3 +'abc')
parseFloat(3.65 +'abc')
会返回合法的数字值,有一定的用途
字符串属性
indexOf 如果查找不到,返回-1,如果找到,返回的是其出现的位置,从0开始算起。
var evtTarget=evt.target ||evt.srcElement;
如果evt.target存在,JS发现第一个表达式的值是真,则不计算后面的,返回的就是evt.target对象。
不是布尔true.
var test = new Object();
test.a=2;
test.b='2';
test.c=function(){console.log(test.a*test.b);}
test.c()
var test2 = {
a:2,
b:'2',
c:function(){
console.log(this.a*this.b);
}
}
this它总是引用定义该方法的对象。
客户端(浏览器中)使用window作为全局对象,而全局变量就是定义在window上的属性。
object.property
object['property']
是等价的,property替换成method也是同样的效果。
关联数组
var arr=new Object();
arr["name"]="student";
arr["age"]=20;
arr["sex"]="male";
console.log(arr);
for (var item in arr){
console.log(item)
}
数组
var a1=[];
a1.push(1);
a1.push(2);
console.log(a1)
console.log(a1.pop())
数组有push,pop,shift and unshift 四个方法,前两个是从尾部对数组元素进行增删,后两个是从头部进行相同的操作。
PPK谈JS笔记第一弹的更多相关文章
- 重操JS旧业第一弹:Script与JS加载
不管js被包装成什么样子,最终交给浏览器执行的js都是原生的,都离不开原生js的原理. Script标签纸html中用来加载js的标签,我们知道js可以是来自外部,本地,或者内部一段代码,在这里只讨论 ...
- ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)
在写这篇的时候本来想把标题直接写成报错的提示,如下: “SecurityError:Blocked a frame with origin "http://localhost:55080&q ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- 浅谈JS之AJAX
0x00:什么是Ajax? Ajax是Asynchronous Javascript And Xml 的缩写(异步javascript及xml),Ajax是使用javascript在浏览器后台操作HT ...
- 浅谈JS中的闭包
浅谈JS中的闭包 在介绍闭包之前,我先介绍点JS的基础知识,下面的基础知识会充分的帮助你理解闭包.那么接下来先看下变量的作用域. 变量的作用域 变量共有两种,一种为全局变量,一种为局部变量.那么全局变 ...
- 浅谈 js 正则字面量 与 new RegExp 执行效率
原文:浅谈 js 正则字面量 与 new RegExp 执行效率 前几天谈了正则匹配 js 字符串的问题:<js 正则学习小记之匹配字符串> 和 <js 正则学习小记之匹配字符串优化 ...
- 浅谈 js 语句块与标签
原文:浅谈 js 语句块与标签 语句块是什么?其实就是用 {} 包裹的一些js代码而已,当然语句块不能独立作用域.可以详细参见这里<MDN block> 也许很多人第一印象 {} 不是对象 ...
- 浅谈js拖拽
本文来自网易云社区 作者:刘凌阳 前言 本文依据半年前本人的分享<浅谈js拖拽>撰写,算是一篇迟到的文章. 基本思路 虽然现在关于拖拽的组件库到处都是,HTML5也把拖放纳入了标准.但考虑 ...
- jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法(ajaxfileupload.js第四弹)
第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于<ajaxfileupload.js系列>的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏 ...
随机推荐
- httpHandlers与Http处理程序
ASP.NET HTTP 处理程序是响应对 ASP.NET Web 应用程序的请求而运行的过程(通常称为"终结点").最常用的处理程序是处理 .aspx 文件的 ASP.NET 页 ...
- 基于jQuery的自适应图片左右切换
效果预览:http://hovertree.com/code/jquery/smjv6d0n.htm 基于jQuery编写的横向自适应幻灯片切换特效 全屏自适应jquery焦点图切换特效,在IE6这个 ...
- 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换
[源码下载] 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换 作者:webabcd 介 ...
- EF Core1.0 CodeFirst为Modell设置默认值!
当我们使用CodeFirst时,有时候需要设置默认值! 如下 ; public string AdminName {get; set;} = "admin"; public boo ...
- Null value was assigned to a property of primitive type setter of
在SSH项目的开发中遇到了下面的错误: 检查后发现数据库和映射文件中这个字段是允许为空的,为什么还要出错呢?原来是因为这个字段是int的,int是基本类型,即使设置成可以为空也不能取空值. 解决的办法 ...
- 超简单的激活Microsoft Office 2016 for Mac 方法
1.简介: 2016年9月14日更新本博客,激活工具同样适用于Office 15.25(160817)版本.我此前在国外网站上找到一个App,下载之后运行,直接点击一个黑色开锁的标识按钮,输入系统密码 ...
- Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?
Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么? Integer.valueof(String s)是将一个包装类是将一个实际 ...
- python基础之迭代器、装饰器、软件开发目录结构规范
生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...
- 配置管理工具 Puppet的安装和使用
今天碰到一个linux下的puppet的问题,才发现原来这个是 用ruby语言编写的自动化的管理工具.有兴趣的同学,可以学习下. 这里重点讲述下 mac下 puppet的安装方法: 在Mac下采用Gi ...
- node-inspector调试工具应用
一.起因 想调试某些开源的nodejs项目,然后就选择了node-inspector插件. 他的优点: 1.可以借用chrome或firefox浏览器进行调试,与前端调试融合. 2.配置简单 二.必备 ...