JavaScript 简介

来源:互联网 发布:方正粗金陵简体 mac 编辑:程序博客网 时间:2024/06/05 17:54

2017-6-12

JavaScript 简介

    诞生于1995年,主要用于处理网页中的前端验证的问题,如用户名的长度,邮箱的格式等。它是运行在浏览器端的脚本语言,在可以在后台运行。

    标准:ECMAScript。不同浏览器的实现方式不同,也就是引擎不同,如Chrome用的引擎是v8,很快。

    javascript的实现:ECMAScript、DOM、BOM。


js代码需要写在script标签中,需要添加type属性,如:<script type="text/javascript"><script>。


    alert("你好");   //向页面中弹出警告框
    document.write("hello!");   //将内容输出一body标签中
    console.log("321");  //在控制台中输出内容,要通过开发者工具查看


可以将js代码编写到元素的onclick属性中去,点击元素时,onclick代码会立即执行。

也可以将js代码写到a标签中的href中去,语法:javascript: 代码

<a href="#" onclick="alert('来打我啊');">请点击</a>
<a href="javascript: alert('来打我啊x2');">请点击x2</a>

写在标签内的属性中,是不推荐使用的方法,可以编写到script标签中,或者外部的js文件中,可以将结构和行为进一步分离。

引入外部js文件,用script标签,推荐使用这种方式。


一旦script中引入了外部js文件,那标签中不能写其他内容,写了也不会执行,可创建新的script标签来写内容。

<script type="text/javascript" src="js/new_file.js">
alert("你好");//向页面中弹出警告框
document.write("hello!");//将内容输出一body标签中
console.log("321");//在控制台中输出内容,要通过开发者工具查看
</script>

以上标签中的内容不会执行的。


javascript注释:多行/* */  单行注释://

js中严格区分大小写。

每一条语句以分号结尾。如果不写分号,浏览器会自动添加,但可能会出现错误,所以就手动添加。

忽略多余的空格和换行。



字面量和变量

字面量指一个值,一般不可变。

用var这个关键字来声明变量:  var a;默认值是undefined(声明但未赋值)。 a=12; 或者 var a=12;  var a, b, c=12;


标识符

所有自主命名的内容都可以叫标识符,如函数名,对象名等。

规范:

1.标识符需要以字母、$和_开头。

2.不能是关键字和保留字。

3.驼峰命名,首字母小写,后面每个单词大写。

4.es用的是Unicode编码,可以用中文命名,但不推荐使用。


五种基本数据类型:String,Number,Undefined未定义,Boolean,null空值。另外还有引用数据类型:Object。typeof null返回Object。

字符串中用/表示转义字符。如://、/'、/"、/n

typeof 检查变量的类型


在js中,所有数字都是number类型的。使用的数字大小是有范围的,超过就会返回+-Infinity,不用加引号。NaN表示一个非法的数字,本身也是number类型的,不需要加引号。注意大小写。

js中整数去处可以取得一个准确值,但进行小数运算,会得到一个近似的结果。如果要求精度高,不要用js来计算。


转换成字符串数据类型

toString()方法不会改变原变量的值,而是将转换后的值放在新的变量中。但Undefined和null不能调用。b = a.toString();

toString()函数,是把参数写在括号里的,本质上也是调toString()方法的。如:b = toString(a);但是,null值直接转换成字符串"null",undefined会转换成"undefined"。


转换成数据类型

1.使用Number()函数 

如果字符串是一个合法的数字,则直接转换成对应的数字。如果不是合法的数字,则转换成NaN。如果是空串或者是含空格,则转换为0。

null 会转换成0。undefined会转换成NaN。

2.使用parseInt()函数

      从字符串左侧开始解析,直到最后一个合法的整数位为止,将不合法的部分舍去。如果最左侧第一位不为合法数字,则返回NaN。对于一些特殊的字符串,如"070",在ES5中会当作十进制解析(70),在ES3标准中会当作八进制解析(56)。所以,在函数的第二个参数可以指定进制,如parseInt(a, 10),则按十进制转换。可以用于取整

3.使用parseFloat()函数

      可以解析到有效的小数。


Boolean()

    转换成布尔值

    只要字符串不是空串,结果都是true。只要数字不是0或NaN,结果都是true。null和undefined的结果也是false。


运算符

对两个字符串进行加法运算,会将它们拼接在一起。

任何值和字符串相加,返回的都是字符串,先将该值转换成字符串,再与字符串拼接。

为任意类型的值+" "的方法,即和空字符串相加,将其转换成字符串。

除了字符串,其余的值做加法,都会转成number再计算。如:true + false = 1;

1 + 2+"3" 结果为"33","1" +2 +3结果为"123",按照先后的顺序 运算。


除了加法运算,其他的运算都是将值转换成number再作运算。所以,可以通过减零的方式将任意数据类型转换成number类型。如:b = b - 0;

%取模运算可以得到余数。


一元运算符

非number数据作一元加减运算时,先将数据转换成number再运算。如:1 + "2" +3结果为字符串"123",而1 + +"2" +3结果为数字6。

自增和自减会对原变量产生影响。如:b = a++;先将原值赋给b,再让a增加1,或者说先使用a的原值,再让a加1。如:a = 10; console.log(a++)结果为10,此时a为11。a=a++,则a为10。


逻辑运算

!:非布尔值先转换成布尔值再取反。所以,可以为一个数据类型取两次反,来将其转换成布尔值。

&&:与。两侧同时为true才为true。短路与:如果第一个值为false,则符号右侧的第二个语句不会执行。

||:或运算。短路或:如果左侧为true,则右侧语句不会执行。

可以对非布尔值进行与或运算。

对于非布尔值,先将其转换成布尔值再进行运算,最终返回原值。

与:如果第一个值是true,返回第二个值。否则返回第一个值。

或:如果第一个值是false,则返回第二个值;否则返回第一个值。

赋值运算中,+= 符号不可以拆开。


对于非数值,先转换成数值再讲计算。但是,两个字符串进行比较时,不会转换成数字,而是按照每一位比较Unicode编码。所以,"4">"32",结果为true。


2017-6-16
相等运算符

==:比较两个不同类型的值时,首先需要转换成相同类型的值。一般转换成Number再比较是否相等。但null = 0;的结果为false。NaN不跟


任何值相等,包括它自己,但可以用isNaN()函数来判断。
===:不会进行类型转换。不同类型的值,返回false。
!=: 会对不同类型的值自动进行转换。
!==: ...
undefined和null进行相等比较时会返回true,全等比较时返回false。


三元运算符
表达式1?表达式2:表达式3  表达式1为true,执行表达式2并返回结果;表达式1为false,执行表达式3并返回结果。


运算符的优先级


JS中的 {} 只有分组的作用,没有隔离作用域的作用。


if只对后面的语句起作用,一般用代码块表示。


隐式的类型转换

字符串:可以为任意的数据类型加一个空串来将其转换为字符串。 
数值:可以为任意的数据类型加上一个一元的加号来将其转换为一个数值。 
布尔值:两个感叹号。!!



prompt接收的数据为字符串类型,注意和字符串类型比较时的规则。如果需要将输入数据转换成Number类型的,可以在前面加上加号+


switch(条件表达式){
case 表达式1:
语句;
break;
case 表达式2:
语句;
break;
default:
语句;
break;

2017-6-19

循环终止:break,  continue, 标签

如果要终止外部循环,可以在循环之前添加一个标签和冒号。若标签是“hello:”,则“break hello;”可以终止外部循环。


程序计时器:

console.time()计算程序执行的时间。如:console.time(); console.timeEnd();

两个括号里用同一个字符串作标识。