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  阅读(173)  评论(0编辑  收藏  举报

导航