JavaScript乐子大全
JavaScript乐子大全
这篇博文旨在为罗列js让人无语的特性。如果某天你在写代码时出现了令人费解的错误,或许你能在这里找到答案。
使用JavaScript
- 由于没有BOM的标准可供遵守,因此每个浏览器的实现可能不尽相同,也就是说,同一个功能的函数可能在两个不同的浏览器中名称不同
- js的版本情况大多数情况下取决于浏览器
- HTML5的默认脚本语言是JavaScript
- 带有src属性的script中不应该在添加代码,会被忽略
- 把script tag放在
<head>
中可能会导致错误(准确来说,当你的script操作DOM但是却在DOM上面时,浏览器可能会先执行script再加载DOM,script找不到DOM当然会出错) - 在XHTML中,js中的小于号会被当做tag的开头
- 如果某些上古代码在script代码两端加入HTML的注释,那可能是怕浏览器无法解析script……
- 我在这篇推文中会尽量少用
<script>
,因为会被markdown解析成脚本标签……
JavaScript语法
- 可以用拓展的unicode字母来用作变量名,比如Ã,Ç,如果你有同事,不建议你这么做
- 通过
"use strict"
来开启严格模式,严格模式下JavaScript的执行结果可能和你熟悉的JavaScript大不相同 - 如果省略分号,则由解析器确定语句结尾
- 虽然js不是强类型语言,但是
boolen,byte,short,int,long,float,double,char
都是js的保留字 - 如果一个变量你不定义就使用,那它会成为一个全局变量(这是非常危险的行为)
- 在js中,使用== / !=来判断是否相等,会自动转换类型,若使用=== / !==,如果两个值的类型不相等,两个值就不相等
Infinity - Infinity = NaN
- switch语句可以使用任意类型的变量,case中甚至可以写表达式
JavaScript数据类型
- 未经初始化的默认值是undefined
- 对未声明的变量的类型也是undefined
- null的类型是object
null==undefined //true
- 八进制字面值在严格模式下是无效的
0.1+0.2=0.30000000000000004
以此类推NaN != NaN //NaN不等于任何值
- NaN的类型是Number
- 在ECMAScript 5中,parseInt已经不能解析parseInt
- null和undefined没有toString方法,对他们使用toString会返回这两个值的字面量
JavaScript函数
- ECMAScript函数不在意你传进来多少参数,也不在乎传进来的参数是什么类型
- ECMAScript函数不需要写返回值类型就能返回任意值
作用域
- 在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境中
引用类型
- 在JavaScript中可以用方括号来表示对象引用,比如
var person{name:'john'};alert(person['name'])
- ECMAScript数组的每一项都可以保存任意类型的数据
- js的数组可以在任意一个位置存放内容而无视之前的空间是否有内容,比如
var nums=[0.1.2];nums[99]=99;alert(nums[98]); //undefinedalert(nums.length); //100
- sort方法默认比较字符串
- 如果Data.parse()方法接受的字符串无法解析为日期,会返回
NaN
- JS的正则表达式类,用RegExp.$1…RegExp.$9存放第1至9哥匹配的捕获组
- JS的函数实际上是对象,每个函数都是Function类型的实例
- “函数是对象,函数名是指针”
- 没有重载
- 在严格模式下,访问
arguments,caller
会导致错误 - bool,number,string类型也能调用方法,会先转化为Boolean、Number、String类型,执行完方法后销毁对象
- 不属于任何其他对象的属性和方法,都属于Global对象
- eval!将字符串转化为可执行的js代码
函数表达式
- 匿名函数的name是空字符串
- 在使用
if else
来控制函数声明 可能 会导致调条件被略过 - 在递归时,可以使用`argument.callee``代替函数名
- 闭包只能包含包含函数中任何变量的最后一个值
- 当函数被某个对象调用的时候,this等于那个对象;但是匿名函数具有全局性,所以this对象一般指向window对象
- 闭包在IE中回因为一些问题
- JavaScript没有私有成员的概念,所有对象都是共有的
BOM
- 所有在全局作用域中声明的变量、函数都会变成window对象的方法和属性
- 全局变量不能被delete删除,但是直接在window对象上定义的属性可以
- 除非最高层的窗口时通过`window.open()·打开的,否则其window对象的name属性不会包含任何值
- 调用
setTimeoout
后,该方法会返回一个数值ID,表示超时调用,可以通过调用clearTimeout
并将相应的超时ID作为参数传递给他以取消尚未执行的超时调用计划 - 要取消尚未执行的间歇调用,可以使用
clearInterval
方法并传入相应的间歇调用ID prompy
返回输入的值window.print
打印window.find
查找- window.location和document.location调用的是同一个对象
在JavaScript中有几个对象用处不大,search就是其中之一
- 可以用history对象控制后退前进
DOM
- 可以在JavaScript中为浏览器添加script和link
- 截至2011年,还没有浏览器支持
matchesSeletor
方法JavaScript乐子大全相关推荐
- js鼠标事件大全-Javascript鼠标事件大全
js鼠标事件大全-Javascript鼠标事件大全 2009年03月11日 星期三 14:22 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick 当键盘上的某个键被按下并且释放时 ...
- JavaScript面试题大全之基础面试题(附答案)
近年来,从事web前端开发的程序员越来越多,都需要使用JavaScript,这篇文章主要整理一些最常见的JavaScript面试题以及答案. 介绍JavaScript的数据类型 值类型(基本类型):字 ...
- javascript常用代码大全
http://caibaojian.com/288.html 原文链接 jquery选中radio//如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...
- JavaScript验证正则表达式大全
JavaScript验证正则表达式大全 匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度 ...
- JavaScript触发事件大全--能力工场
1.onabort:当用户终止正在打开的网页时产生该事件. 2.onblur:某元素失去活动焦点时产生该事件.例如鼠标在文本框中点击后又在文本框外点击时就会产生. 3.onchange:当网页上某元素 ...
- 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!
呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!! ✴️大家好,我是王同学,爆肝三天三夜王同学把JavaScript 知识点梳理了一遍,文章没有一点套路,只有满满的干货 ✴️如果对你 ...
- JavaScript 编码规范大全-Eslint(持续更新,欢迎关注点赞加评论)
JavaScript 编码规范大全(持续更新,欢迎关注点赞加评论) 文章目录 JavaScript 编码规范大全(持续更新,欢迎关注点赞加评论) 前言 0. 相关工具 1. 类型 2. 引用 3. 对 ...
- javascript 常用代码大全
javascript 常用代码大全 //打开模式对话框 function doSelectUser(txtId) { strFeatures="dialogWidth=500px;dialo ...
- 个性JavaScript特效页面大全
个性JavaScript特效页面大全 (在展示页面右键--查看源文件即为源码): 1:警报对话框篇 2:菜单导航篇 3:状态栏特效篇 4:浏览器篇 5:页面背景篇 6:页面导航篇 7:页面搜素篇 8: ...
最新文章
- 2019手机浏览器排名_浏览器排行榜2019年1月浏览器市场份额排名
- 【Netty】主从反应器 ( Reactor ) 多线程模型
- lseek函数实现对打开文件的定位
- Python并发编程之多进程(二)
- VTK:几何对象之Frustum
- 傻瓜式的php+mysql伪静态(真实存在的html页面)
- ECMAScript+DOM+BOM
- oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法
- qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
- C#中A a=new B()的意义
- php负载均衡慕课网,Nginx实现负载均衡
- 音乐 美术 劳技 计算机教研组工作总结,美术劳技室工作总结
- 程序员常用的画图软件推荐
- JSP教程:学习路线和开发工具安装视频
- java中的URLEncoder和URLDecoder类
- 状态方程simulink仿真_控制系统设计与仿真作业与复习资料
- 神经网络发展历史时间统计表(留存收藏)
- QQ邮箱获取和使用授权码
- 树莓派?云服务器?小主机?旧手机使用Termux安卓手机中跑Java跑spring boot不香吗?
- java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...
热门文章
- js鼠标事件大全-Javascript鼠标事件大全