js 是什么类型的语言 脚本;轻类型,解析型加粗样式
怎么解析的,解析的过程是什么?
1.语言分析 分析是否有js语法错误
2.预编译 执行之前需要做准备工作
3.解析执行 执行代码,按照从上往下,逐行执行
var _init;
var num = 0;
num = '你好世界'
console.log(num);
数据:在js中放在哪里?如何被使用?
----> 变量中 通过使用【变量】,使用数据
所学的知识点都是为变量服务的
1.什么是变量? 表示可变状态、具有存储空间的对象
2.声明的方式是什么? 用var
3.变量有什么特点? 变量中存的值是可变的,用 var 关键字来定义变量,并可以将其初始化值为任何数;
xcy 变量名,自定义的
= 运算符 作用:赋值作用
'xcy' 数据 数据字符串类型
变量赋值初始化指的是第一次赋值;(进行初始化赋值)
var xcy = 'xcy';// var 关键字 作用声明变量,并初始化赋值为'xcy'
console.log(xcy);
xcy = 0;
console.log(xcy);
js数据类型
var init = '引号中的内容可以随便写,网页中使用可见内容基本的都是字符串';// string 字符串
var num = 12;// number 数值型/整数
var num_float = 0.1; // number 数值型/浮点数
var bool = true;// boolean 布尔型
var bool_f = false; // 布尔型只有两个值 ture false
var un = undefined; // undefined 类型 表示 一个变量没有赋值 未定义:只有定义了系统才会在内存中为这个变量分配一块空间
var nu = null; // 表示空,值不存在
// js 基本类型数据有哪些?
// -->string num boolean null undefined
//undefined 与 null 的区别是什么?
//undefined:表示未定义;但是给变量赋值了,值就是undefined 未定义:只有定义了系统才会在内存中为这个变量分配一块空间
//null: 空 表示值一直不存在
// 为什么 说unfined 的值是存在的?null 值是不存在的?
// ---> 相对内存,null 在内存中不占地,undefined 在内存中占空间
var unl;
un1 = 'undefined'; // 内存在空间存在,直接更改数据
// console.log(unl);
var nu1 =null;
nu1 = 'null'; // 1.在内存中先开辟一个空间,在存'null'值'
// 数组元素,数组元素可以为任意的js 数据类型
var arr = [1,1,'1',true,undefined,null,[],{}];// 数组
//{key:vulue} 键值对 key 键 value 值
// key:存放js数据,key本身是string 类型
// value 为js任意类型
var obj = {
"name":"xcy",
"age":12,
}; // 对象
var foo = function(){} // 函数
// js 数据类型分类
// 基本类型和引用类型
// 引用类型:数组 对象 函数
变量名的命名规范
1.不能命名js关键字
2.首字符必须是字母、下划线或美元符号、任意数字、字母,不得 a b c d 1 2 3 4;
3.驼峰式命名
文件命名 mine-center.js
开头为 _init 表示文件名不宜过长
变量命名规范:驼峰命名法
函数命名:foo_bar
运算符
运算符:能运算的符号
表达式:运算符和操作数结合就会形成表达式
*** 凡是表达式一定有返回结果
难点:推理运算过程
不是只有number 类型才能使用算数运算符
数据类型之间有隐士装换
NaN 当运算结果 没有任何数值可以体现时候;就为NaN;
页面中所有内容全部都是字符串 隐士转换 页面中所有内容;只有字符串格式数据才能展示
工作台不存在隐士转换
所有的隐士转化都和运算结果有关
// var arr = [1,[],true];
// alert(arr); // 1,true 默认转为数组展开方式的字符串;
var obj ={name:12};
alert(obj); // '[object,Object]' obj这是固定的,如需要输出显示可以换输出方式
document.write(obj)
console.log(obj);
// alert(obj.name);
// 1.当布尔类型 遇到 算数运算符 一般转化为 number类型
// true 1 false 0
var res1 = true+false;
// = 1+0
console.log(res1); // 1
// 2.数字字符串 遇到除了 + 算数运算符 转为 number
var res2 = '123'-1;
// = 123 - 1
// = 122
console.log(res2);
// 3.空字符 也是隐士转换 number 为 0;
var res3 = ''-1;
// = 0 - 1
console.log(res3);
// 4.非空非数字字符 隐士转number 为NaN
// 5.任意数据与NaN运算结果都是NaN
var res4 = 'xieke' - 1;
// = NaN - 1
// = NaN
console.log(res4);
// 6.undefined 转换number为NaN
var res5 = undefined - 1;
// = NaN -1
console.log(res5);
// null 转换为number为0;
var res6 = null - 1;
console.log(res6);
// 8.数组和对象转为number;先隐士转为字符串,再由字符串转为number
var res7 = [1,2,'ww'] - 1; //[1,2,'ww']为非空非数字字符串所以为NaN,NaN与任何数据运算都为NaN;
// =NaN-1
// =NaN
console.log(res7);
var res8 = [111]-1; //数字字符串 隐士转换number 111
// =111-1
// =110
console.log(res8);
var res9 = {name:'xieke'}-1; //{name:'xieke'}为非空非数字字符串所以为NaN,NaN与任何数据运算都为NaN;
// =NaN-1
// =NaN
console.log(res9);
++ 自增,每次执行时,给操作自身增加1
– 自减,每次执行时,给操作自身减少1
var count = 1;
// 先赋值 后 运算
// 先把count的值赋值给res 再进行count 自增运算
var res = count++;
// res = count = 1
console.log(res,count);
var count1 = 1;
// 先运算 后赋值
// 先给count1自增运算,再将运算结果赋值给 res1
var res1 = ++count1;
console.log(res1,count1);
var num = 2;
var c = 2;
var result = num++ + ++num;
// = 2+4 // num++先赋值为2 后2+1 + ++3
// =6
console.log(result);
var result1 = ++c + ++c + c++ + c++
3 + 4 + 4 + 5
console.log(result1);
比较关系运算符
**1. 比较关系运算符,表达式返回结果为boolean;
2.字符串数据比较规律
1)从第一个字符开始比较,先将字符转为 阿斯克码值或者Unicode编码值,用这两个值进行比较
2)与字符串的字符长度无关
**
d = a==b;// 判断a和b 的数据大小是否相等
d = a===c;// 判断 a 和c 数据类型相等 并且大小也相等
d = a!=b;// 判断 a 和b 的大小是否不相等
d = a!==b;// 判断 a 和b 的类型或者大小不相等
// 注意 = 赋值 == 等于 ===全等于