java_script基础
Java_script建成js,是动态的弱类型脚本解释性语言,和HTML,CSS 并称为三大WEB核心技术,得到了主流浏览器的支持
1995年9月,网景公司测试发布java script
1997年,制定了ECMAScript标准,js是其中标准的实现之一
1999年网景被AOL收购,,创建了Mozilla组织,Mozilla组织使用Gecko引擎,重写了浏览器,Mozilla组织将Gecko引擎发布了Firefox浏览器
网景的技术
HTTP Cookie ,结局了HTTP的无状态
Java script
SSL 协议
JAR格式文件,
2012年,微软以10亿5千6百万刀购买了他的专利,和专利授权
ES
ECMAScript 是由ECMA国际,通过ECMA-262标准化的脚本程序设计语言,该语言被广泛的应用于互联网中
Java script是商品名,目前商标权在ORACLE手中,ES是标准名
2015年ES6发布,引入了很多的语言特性,兼容旧版本,ES6开始使用年号作为版本号,ES6即ECMAScript2015
V8引擎
2008年9月2日,Google的chrome浏览器发布,并采用了V8引擎,V8使用BSD协议开源
V8引擎使用C++开发,将JAVASCRIPT编译成了机器码,而不是字节码,还用很多优化方法提高性能,V8引擎速度很快
V8引擎可以独立运行,可以嵌入到其他任何一个C++程序中
它的诞生,使得服务器端运行js成为了方便的事情
Nodejs
nodejs是服务器端运行Java script的开源,跨平台运行环境
原始作者为,瑞安 达尔,2009年发布,使用V8引擎,采用了事件驱动,非阻塞,异步IO模型
windows下安装nodejs
使用MSI格式文件安装,自动的增加path路径
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
java_script的入门知识
注释
// 单行注释
/*
多
行
注
释
*/
str = 'hello'+/*注释*/ 'world'
console.log(str)
常量和变量
常用的量不需要改变的 变量就是常量
标识符
标识符必须是字母,下划线,美元符号和数字,但必须是字母,下划线,美元符号开头
不能数字开头
标识符区分大小写
声明
var 声明一个变量 全局
let 声明一个作用域的局部变量
const 声明一个常量
JS的变量声明和初始化时可以分开的
var a //只声明,未定义
const c = 100 // 常量声明,声明时必须赋值,且之后不可更改
var x = 5 //规范化的声明且初始化,声明全局或者局部变量
x =6 // 不会犯的初始化,不推荐,在赋值之前不能引用,因为他没有声明,一旦赋值就是在全局作用域中
#~~~~~~~~函数中的作用域~~~~~~~~~~~~~~~
var a =200 //全局作用域 a = 200
console.log(a)
function foo() {
var a
a =100 //作用域内 a 值= 100,与外界不影响
console.log(a)
}
foo()
打印结果为
200
100
关于常量和变量的选择
明确知道一个标识符定义后不需要更改就定义为常量,
应该尽量的声明 常量,减少被修改的风险,减少bug
数据类型
|
名称
|
说明
|
|
number
|
数值型,包括整型和浮点型
|
|
boolean
|
布尔型,true或false
|
|
string
|
字符串
|
|
null
|
只有一个值 null |
|
undefined
|
变量声明未赋值,对象未定义
|
|
symbol
|
ES6 新引入类型
|
|
object类型
|
是容器,是以上类型的符合类型
|
ES是 动态语言,弱类型语言
虽然先声明了变量,但是变量可以重新赋值任何类型
//类型的转换
// 类型转换
// 弱类型
//转为了字符串
console.log('======string======')
console.log(a = 3 + ' magedu ' ,typeof(a))
console.log(a = null + ' magedu ' , typeof(a))
console.log(a = undefined + ' magedu ' , typeof(a))
console.log(a = true + ' magedu ' , typeof(a))
//转为了数值
console.log('======number======')
console.log(a = null + 8 , typeof(a))
console.log(a = undefined + 8 , typeof(a))
console.log(a = true + 8 , typeof(a))
console.log(a = false + 8 , typeof(a))
//boolean True or False
console.log('======boolean======')
console.log(a = null + true ,typeof(a))
console.log(a = null + false ,typeof(a))
console.log(a = undefined +true ,typeof(a))
console.log(a = undefined + false ,typeof(a))
console.log(a = null & false ,typeof(a))
console.log(a = null & true ,typeof(a))
//短路
console.log(a = null && false ,typeof(a)) false && false
console.log(a = null && true ,typeof(a))
console.log(a = false && 'magedu',typeof(a))
console.log(a = true && 'magedu' ,typeof(a))
console.log(a = true && '' ,typeof(a))
&&可以用作逻辑与的运算符,表示逻辑与(and),
当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,
即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException
||可以作逻辑或运算符
表示逻辑或(or),当运算符有一边为true时,整个运算结果为true!
//NaN 'number' 非数字类型
console.log('=======null======')
console.log(a = null+ undefined,typeof(a))
弱类型,不需要强制类型转换
NaN Not a Number 转换数字失败
总结:
遇到字符串,+ 就是拼接字符串,所有字符串隐式转换为字符串
如果没有字符串,+ 把其他类型当作 数字 处理,非数字类型,隐式的转换为数字,underfined特殊,它没有定义值,所以是一个特殊的数字 NaN
如果运算符是逻辑运算符,短路符,返回就是短路时的类型,没有隐式转换
当目的不明确时,不应该以来隐式转换,为了程序的健壮,应该 显式的转换
字符串,
一个值,被 ' or " 引用起来就是字符串
ES6 新特性 支持 ` 定义字符串可以支持多行,支持插值
let name = 'tom' ,age=19
console.log(` hi im ${name},i am ${age})
字符串换行
let `
支
持
换
行
`
转义字符
|
名称
|
说明
|
|
\0
|
NULL 字节
|
|
\b
|
退格符
|
|
\f
|
换页符
|
|
\n
|
换行符
|
|
\r
|
回车符
|
|
\t
|
制表符 TAB
|
|
\v
|
垂直制表符
|
|
\'
|
单引号
|
|
\"
|
双引号
|
|
\
|
反斜杠
|
|
\XXX
|
0-377 最多三位八进制数XXX表示的Latin-1字符,、251是版权符号的八进制序列
|
|
\xXX
|
00和FF 的两位十六进制数字XX表示的Latin01字符,\xA9是版权符号的十六进制序列
|
|
\uXXXX
|
由四位十六进制数字XXXX表示的Unicode字符,例如\u00A9是版权符号的Unicode序列
|
|
\u{XXXXX}
|
Unicode代码点(code point)转义字符, \u{2F804}相当于Unicode转义字符 \uD87E\uDC04的简写
|
字符串的操作方式
|
方法
|
示例 let school = 'magedu'
|
|
.charAt(num)
|
school.charAt(2) //g
|
|
[2]
|
school[2] //g
|
|
.toUpperCase()
|
school.toUpperCase() //MAGEDU
|
|
.concat('str')
|
school.concat('.com') //'magedu.com'
|
|
.slice(num,...)
|
school.slice(3) // edu [支持负索引 (-2,-1)=d],[(3,5)=ed]
|
|
.split('.')
|
字符串切割
|
|
.substr()
|
'www.baidu.com' .substr(7,2) //du 从索引7开始后去2位字符串
|
|
.substring()
|
console.log('www.baidu.com'.substring(7,10)) 从索引7开始 向后倒索引10 取出字符串
|
|
.indexOf('ed',4)
|
指定 索引后 出现的 字符串 的 索引位置
|
|
.replace('.edu','.com')
|
字符串替换
|
|
.trim()
|
去掉两头的空白字符
|
posted on 2018-01-11 14:16 pythonerLau 阅读(215) 评论(0) 收藏 举报
浙公网安备 33010602011771号