js

跳转页面

命名规范

和java一样,小驼峰

数据类型

  • typeof运算符:检测是什么类型
    5种数据类型

  • 字符串
    parseInt(s);// 字符转数字
    paseFloat(s);// 字符转浮点

  • 数值型 number
    强制类型转换
    Number(s);

  • 布尔值(5种情况为false)
    Number:非0的数,值为true,负数也是true,0和NaN为“false"
    String:非空字符串为:true,""为false;
    换多行:飘号,tab 和esc中间的符号
    image

    Object对象,非null:true;
    总结:不为null,0,NaN,undefined,都是true

  • 对象 object

  • 数组
    数组也是对象,数组里可以放表达式,函数、日期。

  • null Undefined

  • 函数 function
    JSON不能存储Date对象。
    通过转换为字符串,再将字符串转化为Date对象。

数组遍历

fori

for(var i = 0;i<arr.length;i++)

for in (num是索引)

var ages = [2,5,7];
for(var num in ages){
console.log(age[num]);
}
// v是元素
arr.forEach(function(v){console.log(v)});
// v是元素
for(var v of set){
console.log(v);
}

json对象格式

标准格式,:左边用引号

var obj = {
'name':'hello',
'age':20
}

字符和json对象转化

对象(数组)转字符串:

JSON.stringify(obj);

Json字符串,数组互转

// json字符转,数组
arr = JSON.parse(str)

等待2秒执行

点击查看代码
setTimeout( function(){
	$('#editForm .easyui-combobox').combobox('readonly',true);
	$('#editForm .easyui-textbox').textbox('readonly',true);
}, 2 * 1000 );

image

断点

google

f11 进入函数
f10 往下执行一行
f8 走到下一个断点
debugger 代码的断点
ctrl+shift+F11 返回上一个断点,好像只能返回一次

函数

函数没有返回值, 通过var 变量接收了,结果就是undefined;
变量声明了,没有赋值,结果还是undefined;
js return语句,后面还可以写代码,虽然不会执行,也不会报错,注意和java的区别;

函数定义方式

点击查看代码
// 匿名函数
var x = function (a,b) {
	return a*b
	}
var z = x(3,3);
// 构造函数
var fn = new Function('a','b','return a*4')//字符串自动解析为表达式返回结果
// 匿名函数表达式,
// 缺点:
// 1:匿名函数在栈追踪中,不会显示出有意义的函数名,debug很困难.
// 2:如果没有函数名,当函数需要引用自身时只能使用已经过期的arguments.callee引用,比如递归中,另一个函数需要引用自身的例子,事件触发后事件监听器需要解绑自身;
// 3:匿名函数省略了对代码可读性/可理解性,很重要的函数名,一个描述性的名称可以让代码不言自明;
语法:
(function(){
	var a=3;
	console.log(a);
})();
# this指向问题 | 普通函数中的this指向谁? | 执行该函数的当前对象:就是window | | ------------ | ------------ | | 对象的方法中的this是谁? | 当前对象 | | 定时器方法中的this是谁? | window,也是它; | | 构造函数中的this是谁 | 被实例化的对象引用 | | 原型对象方法中的this是谁 | 实例对象 |

变量作用域

变量

  • 全局变量:
    使用var 声明的变量, 都是全局变量,(除了在函数中)。
    带 var的全局变量,不会被删除.
  • 局部变量
    除了定义在函数以内,用 var 声明的变量。
  • 隐式全局变量
    不管定义在哪里,只要不用 var 声明, 就都是隐式全局变量, 可以用delete删除.
  • 全局和局部的注意点
    全局变量释放内存的周期更长,更消耗内存,所以尽量多用局部变量,全局变量一般用var,防止被删除。

作用域

  • 全局作用域
  • 局部作用域
  • 块级作用域(ES6后)

严格模式

严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。
严格模式下你不能使用未声明的变量,必须用var申明变量。
严格模式下不能用保留关键字。
"use strict" 指令只允许出现在脚本或函数的开头。
禁止自定义的函数的this指向window;
对象不能有重名的属性;

ajax跨域

要想在服务器端设置,cookie,ajax跨域可以接收?

  • 1:SpringBoot才支持,老Spring不支持!
  • 2:需要满足相同域名,或同一个顶级域名!

ajax,跨域带上cookie,要保证顶级域名相同: .jd.com
image

中文转码

// 转回中文
decodeURI("%E4%BD%A0%E5%A5%BD");
// 中文转码
encodeURI("你好")

异常

js也有java的,throw和try

posted @ 2022-07-31 12:17  jf666new  阅读(35)  评论(0)    收藏  举报