一.什么是javaScript?
1.与页面进行交互的脚本语言,具有较强的逻辑性.
二.javaScript语言的特点
1.脚本语言.javaScript是一种解释型的脚本语言
2.基于对象
3.简单
4.动态性
5.跨平台性
三.javaScript的组成部分
1.核心(ECMAscript:欧洲计算机制造商协会) (语法规范:ECMA-262标准)
2.BOM 浏览器对象模型(browser object model)
3.DOM 文档对象模型(document object model)
四.<script>标签的属性:
- src 表示要引入的外部文件
- type表示脚本语言的类型 text/javascript,默认值就是他
- language已废弃.原来用于代码使用的脚本语言.由于大多数浏览器忽略他,所以不要用了.
- defer:可选.(等页面加载完成后,才执行js)表示脚本可以延迟到文档完全被解析和显示后再执行.由于大多数浏览器不支持,故很少用.
- charset:可选.表示通过src属性指定的字符集.由于大多数浏览器忽略他,所以很少用它
- async:可选 ,能简单实现js的异步加载.
五.声明变量
1.使用var关键字(variable:可变的量)
var uname; // undefined
uname="周杰伦"; // 赋值
2.声明变量即赋值(推荐)
var uname="周杰伦";
3.声明多个变量
var uname="周杰伦",age="20";
注意: 我们在定义变量的时候,尽可能的不要只声明,不赋值,而是声明的同时初始化一个值
六.数据类型
1.基本的数据类有6种
string 字符串类(单引号或双引号都是字符串),
number 数值类型 (包含整型,浮点型),
boolean 布尔类型(true/false),
null(顶级) Object,
undefined 未定义类型,
object 对象类型(array,function....)
null派生了undefined
//分2种类型
1.值类型 string,number,boolean,undefined
2.引用类型 object,array,function
2.查看基本的数据类型的方式
typeof uname 或 typeof(uname)
七 关键字:已经被js内部使用了的

image
八.保留字:虽然还没被使用,但将来可能会被js内部使用
image

image
九.变量的命名规范
1.只能是数字,字母,下划线_,$
2.不能以数字开头
3.不能是关键字或保留字
4.严格区分大小写
5.见名思意,语义化
6.驼峰命名法.
a.大驼峰
var YourName=new Person();//用于表示对象
b.小驼峰
var yourName="周杰伦";//表示普通的变量
十.Boolean类型的转换规则:(牢记)
String:非空字符为true,空字符为false
Number:非0数值为true,0和NaN为false
Object:对象不为null则为true,null为false
Undefined:undefined为false
Number类型
Number 类型包含两种数值:整型和浮点型.
NaN,即非数值(Not a Number)是一个特殊的值
==ECMAScript 提供了isNaN()函数,用来判断是不是NaN. isNaN()函数在接收到一个值后,会尝试将这个值转换为数值==
2.2类型的自动转换
var sAge="18";
sAge-0;//自动把字符串类型的"18"转变成数值类型的18
2.3强制转换法
1.Number(), String(), Boolean(),
字符串转数字类型:
parseInt()是把其他转换为整型
parseFloat() 是把其他类型转换为浮点型(小数)
十一.js运算符的使用
1.算数运算符:+, -, *, /, %(取余数mod )
2.字符串和变量的拼接: +
3.关系运算符
< , > , < = , >= ,== , === , !=, !==
4.逻辑运算符: &&与(且)、||或丶!非
// && 只要找到一个假的,就不往后面找
// ||只要找到一个真的,就不往后面找
// 又称为 短路运算符,&&优先.
var str =2||true&&false;
console.log(str)? 2
5.赋值运算符:
= ,+= ,-= ,*= ,/= ,%=
6.自增.自减
++a ,先运算,后赋值
a++,先取,后运算
--a ,a--
//先自增,再乘法 最后+
var a =10;
var sum = ++a + a++ *2
//33
十二.特殊的面试题.
[]==[]; //false 2个[]不同对象的地址
[]!=[]; //true 2个[]不同对象的地址取反
[]==![]; //true "!"优先,'![]'的值是false,接下来就是[]==false,比较
//由于右边不是对象,是值类型(boolean),所以左边的[]要转换值类型(Number([]))
[]==false; //[]要转换值类型(Number([]))先转数值0,再与右边比较.
先解析[]==false为什么是true?他是经历了这个过程最终才为true的.
([]==false)--->([]===+0)--->(""==+0)--->(+0==+0)---> true
//Boolean([]),是true,因为[]是object.
关于0.1+0.2=0.30000000000000004
我们知道,计算机中存储的都是二进制的0和1,而我们现实中的数存入计算机中转换为二进制时有可能不能整除,也就是不能正好整除,所以用二进制表示现实中的数并计算就产生了误差。