js引入方式:

  1、嵌入js的方式:直接在页内的script标签内书写js功能代码。

    <script type="text/javascript">alert('hello')</script>

  2、外联式引入js:以相对路径的方式引入本地js文件,实现H5、CSS、JS分离。

    <script type="text/javascript" src="hello.js"></script>

js变量和数据类型:

  五种基本数据类型:number 、string 、boolean 、undefined 、null

  一种符合类型:object对象

  定义变量:使用var关键字,区分大小写。

    变量定义规范:首字符为字母、下划线、美元符号,其他字符可为这些和数字。

var a = 123;

使用js操作属性:

 <script type="text/javascript">
window.onload = function(){
//通过获取一个标签的id来联系标签
var oDiv = document.getElementById('div1');
       var oInput01 = document.getElementById('input01');
       var aLi = documentsgetElementsByTagName('li');//获取一组标签,使用时可通过下标确定具体使用哪一个
//对目标标签进行style属性重写
oDiv.style.color = 'red';
       aLi[2].style.backgroundColor = 'blue';
var val01 = oInput01.value; //获取输入框内的值
9      oDiv.className = 'box02'; //操作类属性,注意class写法要写成className
10     oDiv.href = '1.css'; //为其引入新的样式文件
11     }
12</script>

  js操作属性时的属性写法和H5里的写法基本一样,“class”的属性写成"className",style里边的属性有横杠的font-size写成style.fontSize。

  还可以使用方括号来操作属性:oDiv.style[attr] = 'red';

  以上function(){  } 就是js的函数书写形式。

  自定义函数时写为:function change02(){  oDiv.className = 'sty02';  }

  函数中可以使用return返回函数结果,也可以只使用一个单纯的return结束函数运行。

  window.onload会使页面加载完后再加载其中的内容,注意写代码时的顺序。

匿名函数:

         oDiv.onclick = myalert;
function myalert(){
alert('hello!');
} /*匿名函数简化代码,优化步骤
将上述代码改写成匿名函数的形式。*/ oDiv.onclick = function (){
alert('hello!');
}

函数传参:

             changestyle('fontSize','50px');

             function changestyle(styl,val){//会被预解析哦
oDiv.style[styl] = val;
}

  这样会将函数中的fontsize传给styl,将50px传给val。

JS中的函数预解析:

      alert(a); //不会报错但是会弹出undefined,相当于已声明未赋值。
//alert(c);开发工具里会报错(c没有声明)
var a = 123; myalert();//在定义函数前使用函数不会弹出undefine,因为js会将函数预解析。 function myalert(){
alert('hello!');
}

  js加载时遇到函数,会将函数的声明和定义全部提前,因此可以在函数定义的前面调用函数。

  函数中的条件语句格式:if{ },多重条件语句:if{ } else if { }或switch(true){ case:true:*****;break;default:****;}

  函数中的for循环语句:for(初始值;条件;变化值){  ***  };

var aRr = [1,2,3,4,3,4,5,7,4,5,7,3,9,5,6];
var aRr2 = [];
for (var i=0;i<aRr.length;i++) //以整个数组为范围进行循环,实现利用循环达到去重效果
{
if (aRr.indexOf(aRr[i])==i) //通过indexOf返回元素第一次出现的位置来去重
{
aRr2.push(aRr[i]);//将不重复元素放到新的空数组
}
}

函数中变量的作用域:

  函数外部定义的变量是全局变量,函数内部定义的变量是局部变量。

  全局变量即既可以被函数内部点调用,也可以被函数外部调用。

  局部变量只可以被本函数内部调用,不可以被函数外部及其他函数调用。

  全局变量一直放在内存里,不会被回收,只有本页面关闭或程序结束才会被回收。

  函数内部在访问变量时,先从内部开始查找变量信息,如果有,使用内部变量,如果无,使用外部全局变量,外部再无,显示错误信息。

封闭函数:

    (function(){
var str = '欢迎访问我的主页!';
alert(str);
})();//后边又加了括号,就是封闭函数自执行。

  封闭函数定义:(function(){。。。})();

  封闭函数的匿名函数减少了函数名避免了冲突的可能,且变量不会污染到全局。

函数闭包:

    function aa(b){
var a = 12; function bb(){
alert(a);
alert(b);
}
return bb;
}
var cc = aa(24);//这个全部变量aa函数进行关联,导致aa函数包含的函数和变量都不会被回收
cc();

  将24传给aa函数的形参b,闭包函数bb拿aa的形参b代入到自己的函数体的实参b。
  闭包其实就是函数嵌套函数,可用来存储环索引值和私有变量计数器。
  内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制回收。
  因为让闭包和外部一个函数进行关联,把它赋值给一个外部变量,外部变量不会被回收,因此闭包的参数和变量也不会被回收。

模拟登录过程:

  

        //1、存储跳转的源页面
var backurl = document.referrer;
//document.referrer是获取上一个跳转页面的地址(需要服务器环境) //2、处理中间的登录逻辑,如果成功 //3、跳转
window.location.href = backurl;
//window.location.href获取或重定url地址      <a href="http://www.baidu.com">百度</a>

JS中的数组操作:

  创建数组:var aRr1 = new Array(1,2,3,'abc')或 var aRr2=[1,2,3,'abc']多维数组使用嵌套[ [数组1],[数组2],[数组3] ];

  求数组长度:aRr.length

  获取数组下标元素:aRr.[n]   aRr1.[n][n]

  拼接字符串:sTr = aRr.join("-")   使用-隔开元素,拼接结果为数组类型。

  从末尾追加元素:aRr.push(val)

  删除末尾元素:aRr.pop()

  从头部插入元素:aRr.unshift(0)

  删除头部元素:aRr.shift()

  反转元素:aRr.reverse()

  返回元素第一次出现的位置:aRr.indexOf(val)

  从第n个元素开始删除m个元素,含n:aRr.splice(n,m)

  删除完后从删除位置再补充进去几个元素:aRr.splice(n,m,'val1','val2',.........)

JS中的数值和字符串操作:

  执行+运算时,若两个变量都为数值,按正常数学运算执行,若有一个变量的数字是字符串类型,运算时按拼接字符串运算执行。

  数值运算可将字符型数字转换成数值行:parseInt(sTr)   parseFloat(sTr),

  数值运算中有个Math对象,使用Math.random()可获取随机数,math对象的更多用法查看文档。

  字符串的第n个字符:sTr.charAt(0)

  获取字符串中某个字符的下标位置:sTr.indexOf( 'str' ),没有时返回-1;

  截取字符串中位置为n到m的元素:sTr.substring(n,m),前包后不包,后不写默认到尾;

  转大写:sTr.toUpperCase();

  转小写:sTr.toLowerCase();

数值运算返回的NaN:

  NaN即Not a Number,

  数字字符混合的情况下转换为数值时,开头就是字符的转换结果为NaN,开头是数字的只转换出数字部分,字符之后去除。

  使用isNaN判断字符型数字时,返回false,不严谨。

简易计算器案例:

window.onload = function(){
var oInput01 = document.getElementById('input01');
var oInput02 = document.getElementById('input02');
var oBtn = document.getElementById('btn');
var oFuhao = document.getElementById('fuhao'); oBtn.onclick = function(){
var num01 = oInput01.value;
var num02 = oInput02.value;
var fuhao = oFuhao.value;
if (num01=="" || num02=="") {
alert('输入框不能为空1');
return;
} if (isNaN(num01) || isNaN(num02)) {
alert('请输入一个数字!');
return;
} switch(fuhao){
case 'add': //这里没有隐式转换,若有数字用‘数字’的字符串方式。
alert((parseFloat(num01)*100+parseFloat(num02)*100)/100);
break;
case 'subtract':
alert((parseFloat(num01)*100-parseFloat(num02)*100)/100);
break;
case 'multiply':
alert(((parseFloat(num01)*100)*(parseFloat(num02)*100))/10000);
break;
case 'divide':
alert(((parseFloat(num01)*100)/(parseFloat(num02)*100))/10000);
break;
}
}
}
    <h1>计算器</h1>
<input type="text" name="" id="input01">
<select id="fuhao">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="" id="input02">
<input type="button" name="" value="点击计算" id="btn">

定时器及其基本使用:

  定时器一般用来制作动画、异步操作、函数缓冲与节流。

    var timer = setTimeout(function(){//3秒后弹出hello!,一次性定时器
alert('hello!');
},3000); clearTimeout(timer); //关掉一次性定时器 var timer2 = setInterval(function(){//反复执行定时器
alert('hi!');
},2000); clearInterval(timer2);//关闭反复执行的定时器

倒计时案例:

  使用定时器做倒计时,实现前端自动下线倒计时。

    window.onload = function(){
var oDiv = document.getElementById('div1'); //实际开发中,时间从服务器获取
function timeleft(){
var now = new Date();//获取时间戳
var future = new Date(2019,11,7,15,28,0);//创建一个日期
var lefts = parseInt((future-now)/1000);//做时差并换算成秒
var day = parseInt(lefts/86400);//将秒换算成天
var hour = parseInt((lefts%86400)/3600);//将秒换算成时
var minute = parseInt(((lefts%86400)%3600)/60);//将秒换算成分
var second = lefts%60; if (lefts<=0) {//(前端下线)倒计时结束后进入百度界面,且再访问不到原倒计时界面。
window.location.href ="http://www.baidu.com";
}
oDiv.innerHTML = '距离2019年11月20日晚24:00还有'+
day+'天'+hour+'时'+minute+'分'+second+'秒'; } timeleft();
setInterval(timeleft,1000); }

倒计时结束后本页面下线,之后再访问本页面显示的都是指定的百度页面。

前端学习笔记-JavaScript的更多相关文章

  1. 【前端】Web前端学习笔记【2】

    [2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...

  2. 【前端】Web前端学习笔记【1】

    ... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...

  3. Web前端学习笔记(001)

    ....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记         ...

  4. web前端学习笔记

    web前端学习笔记(CSS盒子的定位) 相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准 ...

  5. 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

    学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...

  6. 前端学习笔记之JavaScript

    JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名ScriptEase(客 ...

  7. 前端学习笔记汇总(之merge方法)

    学习笔记 关于Jquery的merge方法 话不多说,先上图 使用jquery时,其智能提示如上,大概意思就是合并first和second两个数组,得到的结果是first+(second去重后的结果) ...

  8. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  9. HTML 学习笔记 JavaScript(面向对象)

    现在让我们继续跟着大神的脚步前进 学习一下JavaScript中的面向对象的思想,其实作为一个iOS开发者,对面向对象还是比较熟悉的,但是昨晚看了一下Js中的面向对象,妈蛋 一脸萌比啊.还好有大神.让 ...

随机推荐

  1. C#中的9个“黑魔法”与“骚操作”

    C#中的9个"黑魔法"与"骚操作" 我们知道C#是非常先进的语言,因为是它很有远见的"语法糖".这些"语法糖"有时过于好 ...

  2. 【深度强化学习】Curriculum-guided Hindsight Experience Replay读后感

    目录 导读 目录 正文 Abstract[摘要] Introduction[介绍] 导读 看任何一个领域的文章,一定要看第一手资料.学习他们的思考方式,论述逻辑,得出一点自己的感悟.因此,通过阅读pa ...

  3. 构建安全可靠的微服务 | Nacos 在颜铺 SaaS 平台的应用实践

    作者 | 殷铭  颜铺科技架构师 本文整理自架构师成长系列 3 月 19 日直播课程. 关注"阿里巴巴云原生"公众号,回复 "319",即可获取对应直播回放链接 ...

  4. SublimeのJedi (自动补全)

    关于 Sublime 3 - Jedi Package 的设置和使用方法 我是一枚小白,安装后 Sublime 后,想在码字时,达到如下效果: 打字时,自动提示相关内容 按Tab键,相关内容自动填充 ...

  5. RecyclerView实现拖动排序和滑动删除功能

    RecyclerView 的拖动排序需要借助一下 ItemTouchHelper 这个类,ItemTouchHelper 类是 Google 提供的一个支持 RecyclerView 滑动和拖动的一个 ...

  6. 个人项目:WordCount (Java)

    一.Github项目地址 https://github.com/misterchaos/WordCount 二.解题思路 2.1 基本需求分析 经过仔细阅读题目,分析得出项目的基本需求如下: wc.e ...

  7. Mysql 截取字符串总结

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  8. 操作系统-IO与显示器

    1. 让外设工作起来 只要给相应的控制器中的寄存器发一个指令 向设备控制器的寄存器写不就可以了吗? 需要查寄存器地址.内容的格式和语义.操作系统需要给用户提供一个简单视图---文件视图,这样方便 总的 ...

  9. Django-利用Form组件和ajax实现的注册

    利用Form组件和ajax实现的注册 一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面 ...

  10. STL之map与pair与unordered_map常用函数详解

    STL之map与pair与unordered_map常用函数详解 一.map的概述 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称 ...