JavaScript编程语言
JavaScript编程语言
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。
代码存在形式以及放置的位置
JavaScript存在的形式
<!-- 方式一文件引入 -->
<script src="JS文件"></script>
<!-- 方式二页面中直接写 -->
<script>
    Js代码内容
</script>
JavaScript放置的位置
- HTML的head中 
- HTML的body代码块底部(推荐) - 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。 
 建议:非影响整个页面布局的js可以放在body中的最下位置;
例通过输入内容弹出alert框
<script>
    function GetData() {
        var i = document.getElementById("user")
        alert(i.value);
    }
</script>
<body>
    <input type="text" id="user" />
    <input type="button" value="点我" onclick="GetData();">
    <script>
        function GetData() {
            var i = document.getElementById("user")
            alert(i.value);
        }
    </script>
</body>
javascrip变量
JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。
<script>
    name = 'seven';         // 全局变量
    function func(){
        var name = "lin";   // var 局部变量
    }
</script>
在JavaScript中的注释:
单行 //
多行 /*包过内容*/
基本数据类型
- 原始类型
- 数字
- 字符串
- 布尔值
 
- 对象类型
- "列表"数组
- "字典"
- ....
 
数字(Number)
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
将其他值转换为数字
parseInt(..)将某值转换成数字,不成功则NaN。
parseFloat(..)将某值转换成浮点数,不成功则NaN。
<script>
    age = "18";           //定义一个变量的字符串 age = "18"
    i = parseInt(age);    //将字符串转化为数字
    z = parseFloat(age);  //将字符串转换为小数类型Float
</script>
特殊值:
NaN,非数字.可使用 isNaN(num) 来判断。
Infinity,无穷大.可使用  isFinite(num) 来判断。
字符串(String)
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
1.定义字符串并通过下标取出相应的值
a="zhangsan"
"zhangsan"
a.charAt(0)
"z"
a.charAt(1)
"h"
a.charAt(2)
"a"
2.字符串下标的截取(顾头不顾尾)
a="zhangsan"
a.substring(0,5)
"zhang"
a.substring(0,3)
"zha"
3.获取字符串的总长度;
a="zhangsan"
a.length
8
4.根据指定的字符串(空格),对内容切割为列表split;
a="zhang san li si"
"zhang san li si"
a.split(" ")
(4) ["zhang", "san", "li", "si"]
// 获取切割的前2个值
a.split(" ",2)
(2) ["zhang", "san"]
字符串其他常见方法:
obj.length                           长度
obj.trim()                           移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n)                        返回字符串中的第n个字符
obj.concat(value, ...)               拼接 和 "+" 一样效果
obj.indexOf(substring,start)         子序列位置(从前往后)
obj.lastIndexOf(substring,start)     子序列位置(从后往前)
obj.substring(from, to)              根据索引获取子序列
obj.slice(start, end)                切片
obj.toLowerCase()                    大写
obj.toUpperCase()                    小写
obj.split(delimiter, limit)          分割
obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,
                                     $数字:匹配的第n个组内容;
                                     $&:当前匹配的内容;
                                     $`:位于匹配子串左侧的文本;
                                     $':位于匹配子串右侧的文本
                                     $$:直接量$符号
布尔类型(Boolean)
布尔类型仅包含真假,与Python不同的是其首字母小写
a=true
true
a=false
false
布尔类型判断的符号
- == 比较值相等
- != 不等于
- === 比较值和类型相等
- !=== 不等于
- || 或
- && 且
数组
JavaScript中的数组类似于Python中的列表
1.定义数组
a = [11,222,333,444]
(4) [11, 222, 333, 444]
2.获取数组的长度length
a = [11,222,333,444]
a.length
4
3.插入、删除或替换数组的元素splice
a = [11,222,333,444]
(4) [11, 222, 333, 444]
// a.splice(起始位置,删除1个数,要插入的值)
a.splice(1,1,99)
[222]
a
(4) [11, 99, 333, 444]
// a.splice(起始位置,删除0个数,要插入的值)在指定的位置增加值
a.splice(1,0,888)
[]
a
(5) [11, 888, 99, 333, 444]
// a.splice(起始位置,删除1个数)只指定删除个数,不指定增加值
a.splice(1,1)
[888]
a
(4) [11, 99, 333, 444]
4.切片(顾头不顾尾)
a
(4) [11, 99, 333, 444]
a.slice(1,3)
(2) [99, 333]
5.join在JS中是给数组按照指定的方式拼接(python中是给字符串使用的)
a
(4) [11, 99, 333, 444]
a.join("-")
"11-99-333-444"
6.将2个数组拼接到一起;
a=[11, 99, 333, 444]
(4) [11, 99, 333, 444]
b=["aa","bb","ccc","dddd"]
(4) ["aa", "bb", "ccc", "dddd"]
a.concat(b)
(8) [11, 99, 333, 444, "aa", "bb", "ccc", "dddd"]
常见功能:
obj.length          数组的大小
obj.push(ele)       尾部追加元素
obj.pop()           尾部获取一个元素
obj.unshift(ele)    头部插入元素
obj.shift()         头部移除元素
obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
                    obj.splice(n,0,val) 指定位置插入元素
                    obj.splice(n,1,val) 指定位置替换元素
                    obj.splice(n,1)     指定位置删除元素
obj.slice( )        切片
obj.reverse( )      反转
obj.join(sep)       将数组元素连接起来以构建一个字符串
obj.concat(val,..)  连接数组
obj.sort( )         对数组元素进行排序
字典
1.定义字典
a={"k1":"v1","k2":"v2","k3":"v3"}
{k1: "v1", k2: "v2", k3: "v3"}
a.k1
"v1"
定时器setInterval
格式
setInterval("执行的代码",间隔时间毫秒)
1.定义一个定时器,每2秒钟弹出一个alert框
<script>
    // setInterval创建一个定时器,多久执行一次
    // 第一个参数是要执行什么;
    // 第二个参数多久执行一次;2000毫秒,2秒钟
    setInterval("alert(123)",2000)
</script>
2.通过定时器中输出console.log信息
<script>
    // function f1()  定义一个函数 f1
    function f1() {
        // 在浏览器Console窗口,打印输出内容一般用于打印招聘信息
        var logs="这里是xxoo招聘,请把简历投放到xxx@ooo.com"
        console.log(logs);
    }
    // setInterval 定时器
    setInterval("f1()",2000)
</script>
通过定时器setInterval实现轮播标签
1.定义一个div,设定一个id=i1
<div id="i1">欢迎大人物莅临指导!</div>
2.通过document.getElementById("i1")获取表情内容
tag = document.getElementById("i1")
<div id=?"i1">?欢迎大人物莅临指导!?</div>?
tag
<div id=?"i1">?欢迎大人物莅临指导!?</div>?
3.通过innerText获取标签内的内容(innerText可以获取内容也可以set内容)
content=tag.innerText
"欢迎大人物莅临指导!"
content
"欢迎大人物莅临指导!"
4.通过下标的截取,从新拼接字符串;将拼接字符串从新赋值给tag.innerText
f=content.charAt(0)
"欢"
l=content.substring(1,content.length)
"迎大人物莅临指导!"
new_content=l+f;
"迎大人物莅临指导!欢"
tag.innerText=new_content
"迎大人物莅临指导!欢"
实现效果(它不动我也挺无奈,这个锅要cnblogs背,放html页面试试吧!!)
实现代码
<body>
<div id="i1">欢迎大人物莅临指导!</div>
<script>
    function func() {
        // 获取id为 i1 的标签
        var tag=document.getElementById("i1");
        // 获取标签内部的内容
        var content=tag.innerText;
        // 标签的第一个值
        var f=content.charAt(0);
        // 标签的第一个值后的所有值
        var l=content.substring(1,content.length);
        // 拼接新的字符串
        var new_content = l+f;
        // 将值从新赋给 tag.innerText
        tag.innerText = new_content;
    }
    // 0.5秒执行一次
    setInterval("func()",500)
</script>
</body>
通过定时器,页面显示当前时间
<body>
    <div id="isj"></div>
    <script>
        function currentDate() {
            var da = new Date();
            var year = da.getFullYear();
            var month = da.getMonth()+1;
            var day = da.getDate();
            var hours = da.getHours();
            var minutes = da.getMinutes();
            var seconds = da.getSeconds();
            var txt = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
            document.getElementById("isj").innerHTML = txt;
        }
        setInterval(currentDate,1000)
    </script>
</body>
语句和异常
for循环语句
1.默认循环列表时获取的为下标;
b = ["aa", "bb", "ccc", "dddd"]
        // var 定义的为局部变量
        for(var i in b){
            console.log(i)
        }
0
1
2
3
2.通过下标值获取相应的值;
b = ["aa", "bb", "ccc", "dddd"]
        // var 定义的为局部变量
        for(var i in b){
            // 通过下标获取值
            console.log(b[i])
        }
aa
bb
ccc
dddd
3.默认循环字典获取的是key值:
a = {k1: "v1", k2: "v2", k3: "v3"}
        for(var i in a){
            console.log(i)
        }
k1
k2
k3
4.通过key获取相应的值:
a = {k1: "v1", k2: "v2", k3: "v3"}
        for(var i in a){
            console.log(a[i])
        }
v1
v2
v3
5.通过表达式形式写for循环
for (var i=0;i<10;i++){
}
if条件语句
单条件语法:
if(条件){
}else{
}
多条件语法:
if(条件){
}else if(条件){
}else if(条件){
}else{
}
函数
基础函数
JavaScript中函数基本上可以分为一下三类:
1.普通函数
// 普通函数 function 函数名(形参){语句}
function func(arg){
    return true;
}
2.匿名函数,没有名字的函数
setInterval(function(){
    console.log(123);
},5000)
3.自执行函数,从上往下解释时候,自动执行
格式:
    (function(形参){
        console.log(形参);
    })(实参)
示例:
(function(arg){
    console.log(arg);
})('123')
序列化
常用于用户向后台发送数据的时候,返回的值都为字符串,拿到字符串后需要反序列化将字符串转换为列表进行循环操作;
- JSON.stringify(obj) 序列化
- JSON.parse(str) 反序列化
1.将列表序列化为字符串
li=[11,22,222,333,444,555]
(6) [11, 22, 222, 333, 444, 555]
str_li=JSON.stringify(li)
"[11,22,222,333,444,555]"
2.将字符串反序列化为列表
new_li = JSON.parse(str_li)
(6) [11, 22, 222, 333, 444, 555]
new_li
(6) [11, 22, 222, 333, 444, 555]
转义
- decodeURI( ) URl中未转义的字符
- decodeURIComponent( ) URI组件中的未转义字符
- encodeURI( ) URI中的转义字符
- encodeURIComponent( ) 转义URI组件中的字符
- escape( ) 对字符串转义
- unescape( ) 给转义字符串解码
- URIError 由URl的编码和解码方法抛出
1.将URL中的中文转换为%字符串
url="https://www.sogou.com/web?query=叨客厨子"
"https://www.sogou.com/web?query=叨客厨子"
new_url = encodeURI(url)
"https://www.sogou.com/web?query=%E5%8F%A8%E5%AE%A2%E5%8E%A8%E5%AD%90"
2.将%号字符串,转换为中文
decodeURI(new_url)
"https://www.sogou.com/web?query=叨客厨子"
3.将URL中的//也转换为%字符
a = encodeURIComponent(url)
"https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E5%8F%A8%E5%AE%A2%E5%8E%A8%E5%AD%90"
4.将%字符串转换回中文
decodeURIComponent(a)
"https://www.sogou.com/web?query=叨客厨子"
Date时间对象
获取日期和时间
getDate()                 获取日
getDay ()                 获取星期
getMonth ()               获取月(0-11)
getFullYear ()            获取完整年份
getYear ()                获取年
getHours ()               获取小时
getMinutes ()             获取分钟
getSeconds ()             获取秒
getMilliseconds ()        获取毫秒
getTime ()                返回累计毫秒数(从1970/1/1午夜)
时间常见的格式
var D = new Date()
Mon Oct 16 2017 00:05:15 GMT+0800 (中国标准时间)
D.toISOString();
"2017-10-15T16:05:15.267Z"
D.toJSON()
"2017-10-15T16:05:15.267Z"
D.toLocaleDateString()
"2017/10/16"
D.toLocaleString()
"2017/10/16 上午12:05:15"
D.toTimeString()
"00:05:15 GMT+0800 (中国标准时间)"
D.getFullYear()+"-"+(D.getMonth()+1)+"-"+(D.getDate())
"2017-10-16"
作用域
- JavaScript以函数作为作用域;
- 函数的作用域在函数未被调用之前,已经创建;
- 函数的作用域存在作用域链,并且也是在被调用之前就创建;
- 函数内局部变量,会提前声明,但不会提前赋值;
JavaScript编程语言的更多相关文章
- 浅谈 JavaScript 编程语言的编码规范
		对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编 ... 
- JavaScript:最烂与最火
		============================================================================== 一.世无英雄,遂使竖子成名 1 Web客户 ... 
- 2014年最火的 21个JavaScript 框架
		下面,我们将会介绍 2014 年最火的 21 款JavaScript 框架,专为前端开发者准备的哦:)众所周知, JavaScript 框架是 JavaScript编程语言最棒的特性之一. JavaS ... 
- Day15 HTML补充、初识JavaScript
		一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ... 
- 编写可维护的javascript代码---开篇(介绍自动报错的插件)
		文章开篇主要推荐了2款检测编程风格的工具: JSLint和JSHint: jsLint是由Douglas Crockford创建的.这是一个通用的javascript代码质量检测工具,最开始JSLin ... 
- 【JavaScript脚本编程技术详解-----(一)】
		首先说明,本系列教程是写给有一定的JavaScript编程基础的同学看的,最好还有其它的编程语言经验,因为里面可能涉及一些其它的程序设计语言写的源代码,这都是我自己总结的经验,我喜欢在学习一门新的编程 ... 
- 全栈必备 JavaScript基础
		1995年,诞生了JavaScript语言,那一年,我刚刚从大学毕业.在今年RedMonk 推出的2017 年第一季度编程语言排行榜中,JavaScript 排第一,Java 第二,Python 反超 ... 
- 使用JavaScript和D3.js实现数据可视化
		欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由独木桥先生发表于云+社区专栏 介绍 D3.js是一个JavaScript库.它的全称是Data-Driven Documents(数据 ... 
- JavaScript 原型的深入指南
		摘要: 理解prototype. 原文:JavaScript 原型的深入指南 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 不学会怎么处理对象,你在 JavaScript 道路就就走 ... 
随机推荐
- xadmin后台页面定制和添加服务器监控组件
			xadmin定制 项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原理其实很简单,因为xadmin的处理流程和django类似,都是通过拦截UR ... 
- C 和 C++ 一些基础
			位运算: Part1: #include <iostream> using namespace std; int main(int argc, char *argv[]) { //unsi ... 
- python 大全
			python 大全:https://awesome-python.com/ 生产 GUI 应用的库 :PyQt ,PySide , 不错 (https://kivy.org)kivy - A li ... 
- windows命令行获取时间
			在写Windows批处理脚本时,常常需要获取系统日期.时间戳记,用作文件名.文件夹名.log等等. 本文介绍了如何获取自订的系统日期.时间戳记. 首先,在Windows中,系统日期由以下参数获得: % ... 
- Win2008R2配置WebDeploy发布网站
			一.配置服务器 1.安装管理服务 2.点击管理服务进行配置 二.安装WebDeploy 2.1通过离线安装包方式安装: https://www.iis.net/downloads/microsoft/ ... 
- ifconfig和ping
			命令: ifconfig 对应英文: configure a network interface 作用: 查看 / 配置计算机当前的网卡配置信息 安装: sudo apt install net-to ... 
- echo和重定向
			命令: echo 作用: echo有重复的意思,会在终端中显示参数指定的文字,通常会和重定向联合使用 使用: echo 文字内容 例子: 在终端中显示hello echo hello 命令: > ... 
- Solidity(address的四个方法)
			address的四个方法send,call,callcode,delegatecall 例子:发送以太币的send方法//下面是send方法,涉及到以太币的情况可能用到payable,senddemo ... 
- linux杀死僵尸进程
			用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 sta ... 
- Python traceback的优雅处理
			刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题,但是随着逐渐地深入,我们会发现有很多情况下简单的异常处理已经无法解决问题了,如下代码,单纯的打印异常所能提供的信息会非常有限. ... 
