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. 1.js基础(以通俗易懂的语言解释JavaScript)

    1.JavaScript组成: ECMAScript: 解释器.翻译 -->几乎没有兼容问题 DOM: Document Object Model -->有一些操作不兼容 BOM: Bro ...

  2. 3.定时器的使用(以通俗易懂的语言解释JavaScript)

    1.定时器的作用: 开启定时器:setInterval -->间隔型 setTimeout -->延时型 区别:setInterval会一直执行,应用如微博间隔一段时间不断请求后台数据,看 ...

  3. 通俗易懂的语言描述JavaScript原型

    这是一个翻译.原文地址http://javascriptissexy.com/javascript-prototype-in-plain-detailed-language/# 原型(prototyp ...

  4. 如何才能通俗易懂的解释javascript里面的"闭包"?

    看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量 ...

  5. 谁能用通俗的语言解释一下什么是 RPC 框架

    转载自知乎:https://www.zhihu.com/question/25536695 知乎上很多问题的答案还是很好的,R大就经常在上面回答问题~ 谁能用通俗的语言解释一下什么是 RPC 框架? ...

  6. 关于JAVA,特点,历史,编译式的语言&解释式的语言,什么是java?JDK?DOS?一次编译到处运行原理。

    1.java语言的特点: 简单的:面向对象的:跨平台(操作系统)的(一次编译,到处运行):高性能的: 2.类名的首字母大写,方法小写: 3.历史: java2(即java),为什么加个2呢?1998年 ...

  7. JS高程2.在HTML中使用Javascript(1)

    1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...

  8. JS中的的"闭包"?深入Javascript之this

    看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量 ...

  9. 从Java开发者的视角解释JavaScript

    我们无法在一篇博文里解释JavaScript的所有细节.如果你正或多或少地涉及了web应用程序开发,那么,我们的Java工具和技术范围报告揭示了,大多数(71%)Java开发者被归到了这一类,只是你对 ...

随机推荐

  1. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布

    很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现 ...

  2. [日常] Go语言圣经--示例: 并发的Clock服务习题

    练习 8.1: 修改clock2来支持传入参数作为端口号,然后写一个clockwall的程序,这个程序可以同时与多个clock服务器通信,从多服务器中读取时间,并且在一个表格中一次显示所有服务传回的结 ...

  3. Java基础——详尽说明try-catch-finally的用法

    问:Java异常处理机制,理解了吗?Java异常处理,真的掌握了吗?什么是自定义异常?catch体里遇到return 是怎么处理?finally 体里有return怎么处理?catch 和 final ...

  4. django项目一 登录注册

    STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] AUTH_USER_MODEL = 'cr ...

  5. enum 的使用方法(java)

    作者QQ:1095737364    QQ群:123300273     欢迎加入! enum很像特殊的class,实际上enum声明定义的类型就是一个类.而这些类都是类库中Enum类的子类(java ...

  6. [HNOI2011]括号修复

    设\(nd[4]\) 0--多出来的右括号 1--多出来的左括号 2--取反后多出来的右括号 3--取反后多出来的左括号 这样一来 Swap: swap(0,3),swap(1,2),swap(sn[ ...

  7. 【代码笔记】iOS-产生随机数

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  8. JavaSE——线程同步

    为什么需要线程同步? 同步就是协同步调,按预定的先后次序进行运行.如:你说完,我再说而并非一起动作.“同”字应是指协同.协助.互相配合. 如进程.线程同步,可理解为进程或线程A和B一块配合,A执行到一 ...

  9. python学习笔记之——unittest框架

    unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...

  10. 语义SLAM的数据关联和语义定位(一)

    语义SLAM和多传感器融合是自动驾驶建图和定位部分比较热门的两种技术.语义SLAM中,语义信息的数据关联相较于特征点的数据关联有所不同.我们一般用特征描述子的相似性来匹配和关联不同图像中的特征点.特征 ...