2.js深入(以通俗易懂的语言解释JavaScript)
1.函数返回值:
即函数的执行结果
可以没有return
经验:一个函数应该只返回一种类型的值
2.函数传参
可变参(不定参):arguments ——>(参数的个数可变,参数数组)
例子1:求和
function sum() {
//alert(arguments.length);
//alert(arguments[0]);
//类似面试题数组求和
var result=0;
for(var i=0;i<arguments.length;i++){
result+=arguments[i];
}
return result;
}
alert(sum(8, 8, 8, 8, 8, 8));
例子2:CSS函数
function css(obj, name, value){
if(arguments.length==2) //获取{
return obj.style[name];
}
else{
obj.style[name]=value;
}
}
window.onload=function (){ //先渲染页面,再执行此函数
var oDiv=document.getElementById('div1');
//alert(css(oDiv, 'width'));
css(oDiv, 'background', 'green');
};
//<div id="div1" style="width:200px; height:200px; background:red;">
3.取非行间样式(不能用来设置)
第二个兼容(第一个兼容问题待补充)
//#div1 {width:200px; height:200px; background:red;}
var oDiv=document.getElementById('div1');
if(oDiv.currentStyle){
//IE
alert(oDiv.currentStyle.width);
}
else{
//FF
alert(getComputedStyle(oDiv, false).width);
}
将以上函数封装,以后可通过引入的方式直接使用
function getStyle(obj, name){
if(obj.currentStyle){
//IE
return obj.currentStyle[name];
}
else{
//Chrome、FF
return getComputedStyle(obj, false)[name];
}
}
window.onload=function (){
var oDiv=document.getElementById('div1');
alert(getStyle(oDiv, 'width'));
//alert(getStyle(oDiv, 'background')); //取不到,应该用下面的写法
//alert(getStyle(oDiv, 'backgroundColor'));
};
js第二定律:但凡是好东西,一定不兼容(所以第一定律是???)
经验:js中 99.99...%的兼容问题都是通过 if 来解决的
上述代码background取不到背景色是因为background是一个复合样式,包括背景色、背景图片、背景位置......
复合样式:background、border
单一样式:width、height、position
4.数组基础
定义:var arr = [1,2,3,4];
var arr = new Array(1,2,3,4);
这两种方式无任何差别,[ ]的性能略高,因为代码短。
数组的属性:length
既可获取,又可设置,例如设置 arr.ength=0;可快速清空数组
原则:数组中应该只存一种类型的变量
添加、删除元素
添加:push(元素),从尾部添加;unshift(元素),从头部添加
删除:pop(),从尾部弹出;shift(),从头部弹出
数组的万能操作:splice
var arr=[1,2,3,4,5,6]; //删除:splice(起点, 长度)
//arr.splice(2, 3); //1,2,6 //插入:splice(起点, 长度, 元素...);
//arr.splice(2, 0, 'a', 'b', 'c'); //1,2,a,b,c,3,4,5,6 //替换
arr.splice(2, 2, 'a', 'b'); //1,2,a,b,5,6 alert(arr);
数组连接:concat、join
var a=[1,2,3];
var b=[4,5,6]; //alert(a.concat(b));
alert(b.concat(a));
var arr=[1,2,3,4];
alert(arr.join('- ')); //1-2-3-4 连接成字符串
数组排序:sort
排列一个字符串数组
var arr=['float', 'width', 'alpha', 'zoom', 'left']; arr.sort(); //a->Z
排列一个数字数组,如果直接用sort方法,则sort()会把数字当作字符串来处理,可通过比较函数来解决数字数组排序问题(面试题)
var arr=[12, 8, 99, 19, 112];
arr.sort(function (n1, n2){
if(n1<n2){
return -1;
}
else if(n1>n2){
return 1;
}
else{
return 0;
}
});
alert(arr);
偷懒的好方法
var arr=[12, 8, 99, 19, 112];
arr.sort(function (n1, n2){
return n1-n2;
};
(ps:本内容整理于blue视频教程及个人学习过程中总结,持续更新中)
2.js深入(以通俗易懂的语言解释JavaScript)的更多相关文章
- 1.js基础(以通俗易懂的语言解释JavaScript)
1.JavaScript组成: ECMAScript: 解释器.翻译 -->几乎没有兼容问题 DOM: Document Object Model -->有一些操作不兼容 BOM: Bro ...
- 3.定时器的使用(以通俗易懂的语言解释JavaScript)
1.定时器的作用: 开启定时器:setInterval -->间隔型 setTimeout -->延时型 区别:setInterval会一直执行,应用如微博间隔一段时间不断请求后台数据,看 ...
- 通俗易懂的语言描述JavaScript原型
这是一个翻译.原文地址http://javascriptissexy.com/javascript-prototype-in-plain-detailed-language/# 原型(prototyp ...
- 如何才能通俗易懂的解释javascript里面的"闭包"?
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量 ...
- 谁能用通俗的语言解释一下什么是 RPC 框架
转载自知乎:https://www.zhihu.com/question/25536695 知乎上很多问题的答案还是很好的,R大就经常在上面回答问题~ 谁能用通俗的语言解释一下什么是 RPC 框架? ...
- 关于JAVA,特点,历史,编译式的语言&解释式的语言,什么是java?JDK?DOS?一次编译到处运行原理。
1.java语言的特点: 简单的:面向对象的:跨平台(操作系统)的(一次编译,到处运行):高性能的: 2.类名的首字母大写,方法小写: 3.历史: java2(即java),为什么加个2呢?1998年 ...
- JS高程2.在HTML中使用Javascript(1)
1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...
- JS中的的"闭包"?深入Javascript之this
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量 ...
- 从Java开发者的视角解释JavaScript
我们无法在一篇博文里解释JavaScript的所有细节.如果你正或多或少地涉及了web应用程序开发,那么,我们的Java工具和技术范围报告揭示了,大多数(71%)Java开发者被归到了这一类,只是你对 ...
随机推荐
- 【Java并发编程】2、无锁编程:lock-free原理;CAS;ABA问题
转自:http://blog.csdn.net/kangroger/article/details/47867269 定义 无锁编程是指在不使用锁的情况下,在多线程环境下实现多变量的同步.即在没有线程 ...
- 杭电acm习题分类
专注于C语言编程 C Programming Practice Problems (Programming Challenges) 杭电ACM题目分类 基础题:1000.1001.1004.1005. ...
- Async Await异步调用WebApi
先铺垫一些基础知识 在 .net 4.5中出现了 Async Await关键字,配合之前版本的Task 来使得开发异步程序更为简单易控. 在使用它们之前 我们先关心下 为什么要使用它们.好比 一个 ...
- linux系统编程:自己动手写一个cp命令
cp命令的基本用法: cp 源文件 目标文件 如果目标文件不存在 就创建, 如果存在就覆盖 实现一个cp命令其实就是读写文件的操作: 对于源文件: 把内容全部读取到缓存中,用到的函数read 对于目标 ...
- apache2.2 +php7.3安装 编译安装
1.下载 http://archive.apache.org/dist/httpd/httpd-2.2.0.tar.gz tar -xvf httpd-2.2.0.tar.gz 2.安装 ./conf ...
- requireJS基本概念及使用流程(2)
上一篇我们一起研究了研究requireJS,这一篇我们来说一说requireJS具体的使用过程 其实很简单的,我总结了总结就是分为四步走 第一步:在页面中引入requireJS并且引入入口文件 第二步 ...
- Salesforce中如何删除调试日志
大家在新建一个用户跟踪标记的时候可能会遇到以下报错:调试日志已经超过了上限,在编辑跟踪标志前,删除一些调试日志.但是在点击“全部删除”按钮删除所有可见的日志后,还是报同样的错误,这时候,我们打开开发者 ...
- 代码操作Word时,目录自动更新的两种方法
最近的项目中有一个功能点为:根据分析数据库并生成报告.不过不是大数据.数据挖掘之类,报告的内容.组织方式都是事先固定下来的.实现的方式为,在普通word文档中插入书签制成模板,然后程序使用OpenXM ...
- 记一次寻找appbug的问题
公司规模 3000人以上 全国500强. 从总部刚交接过来的代码. 1.找不到代码.代码部分丢失.(由于没有交接,没有任何相关文档,花了一天确定代码丢失.从总部找到部分代码) 2.查找测试库,发现测试 ...
- Flex自动回收导致监听不到ModuleEvent.READY事件
Flex中可以动态载入模块,以达到延迟加载,减小主程序体积的效果.通常可以使用如下代码: var iminfo:IModuleInfo = ModuleManager.getModule(" ...