单位服务器网站打不开,网站开发业内人士,淘宝网网站建设的的意见,漳州网站建设公司首选公司1#xff0c;变量和常量的区别#xff1a;维度变量常量可修改性声明后可以被重新赋值声明时必须赋值#xff0c;且不可修改作用域let 为块级作用域#xff0c;var为函数/全局作用域块级作用域适用场景值需要动态变化的场景固定值2.写一个函数判断一个js变量的数据类型…1变量和常量的区别维度变量常量可修改性声明后可以被重新赋值声明时必须赋值且不可修改作用域let 为块级作用域var为函数/全局作用域块级作用域适用场景值需要动态变化的场景固定值2.写一个函数判断一个js变量的数据类型script function getDateType(value){ return Object.prototype.toString.call(value).slice(8,-1).tolowerCase(); } /script3.和区别为什么推荐使用抽象相等会自动转换类型后比较如1“1”结果为true。严格相等不转换类型类型和值都相同·才返回true“如1“1”返回值为false。推荐避免隐式转换类型导致不可预计结果如“”0为true逻辑更清晰。4.mull和undefined的区别类型nullundefined含义表示空值主动赋值的空表示未定义变量声明未赋值类型检测typeof null →“object”typeof undefined→undefined场景主动清空变量如 let obj null变量未初始化函数无返回值5.和||什么时候使用举个例子逻辑与||逻辑或所有条件都成立时才成立。例子表单验证用户名 密码都不能为空权限判断登录状态 管理员身份功能触发按钮可点击 数据已加载。||有一个条件成立时就成立。登录验证手机号 || 邮箱均可登录数据兜底取有值的变量避免undefind功能触发点击按钮 || 按回车都触发搜索。6.什么是三目运算符2什么时候使用举个例子结构语法条件表达式表达式1表达式2执行逻辑先判断「条件表达式」的布尔值自动隐式转换如果为 ture执行并返回「表达式 1」的结果如果为 false执行并返回「表达式 2」的结果。它是 if……else语句的简洁写法核心作用是用一行代码完成简单的条件判断与值返回。7.不同运算符的优先级顺序是什么括号 一元 乘除 加减 关系 相等 逻辑 三目 赋值 逗号8.forforEachfor……of的区别1. 传统 for 循环核心手动控制遍历的索引、起始 / 结束条件、步长灵活性最高性能最好。语法for 初始化条件步长{逻辑}示例const arr [10, 20, 30]; // 基础遍历 for (let i 0; i arr.length; i) { console.log(索引${i}${arr[i]}); // 索引010 | 索引120 | 索引230 } // 中断遍历break for (let i 0; i arr.length; i) { if (arr[i] 20) break; // 遇到20停止遍历 console.log(arr[i]); // 仅输出10 } // 异步场景await 生效 async function test() { const arr [1, 2, 3]; for (let i 0; i arr.length; i) { await new Promise(resolve setTimeout(resolve, 1000)); console.log(arr[i]); // 每隔1秒输出1、2、3阻塞遍历 } } test();2. forEach核心数组原型方法回调式遍历简洁但灵活性差无法中断。语法arr.forEach((value,index,array){逻辑}示例const arr [10, 20, 30]; // 基础遍历 arr.forEach((val, idx) { console.log(索引${idx}${val}); // 同for循环输出 }); // 无法中断break 报错 try { arr.forEach(val { if (val 20) break; // Uncaught SyntaxError: Illegal break statement }); } catch (e) { console.error(e); } // 回调内return仅跳出当前回调不会终止遍历 arr.forEach(val { if (val 20) return; // 跳过20继续遍历30 console.log(val); // 输出10、30 }); // 异步陷阱await 不阻塞 async function test() { const arr [1, 2, 3]; arr.forEach(async val { await new Promise(resolve setTimeout(resolve, 1000)); console.log(val); // 1秒后同时输出1、2、3无阻塞 }); } test();3. for……of核心ES6 迭代器语法兼顾简洁性和灵活性支持大部分可迭代对象。语法: for(const value of 可迭代对象){逻辑}const arr [10, 20, 30]; // 基础遍历直接取值 for (const val of arr) { console.log(val); // 10、20、30 } // 中断遍历break/continue 生效 for (const val of arr) { if (val 20) break; console.log(val); // 仅输出10 } // 遍历其他可迭代对象字符串/Map const str abc; for (const char of str) console.log(char); // a、b、c const map new Map([[a, 1], [b, 2]]); for (const [key, value] of map) { console.log(${key}: ${value}); // a:1、b:2 } // 异步支持await 生效 async function test() { const arr [1, 2, 3]; for (const val of arr) { await new Promise(resolve setTimeout(resolve, 1000)); console.log(val); // 每隔1秒输出1、2、3阻塞遍历 } } test(); // 获取索引结合 Array.prototype.entries() for (const [idx, val] of arr.entries()) { console.log(索引${idx}${val}); // 索引010 | 索引120 | 索引230 }优先用for...of大部分日常场景遍历数组 / 字符串 / Map/Set、需要中断、异步遍历兼顾简洁和灵活是 ES6 推荐的遍历方式。用传统for循环性能要求极高如超大数组遍历无函数调用开销需要手动控制步长如 i 2 跳着遍历兼容极低版本浏览器如 IE8 及以下。用forEach仅当① 无需中断遍历② 代码追求极简一行回调③ 明确不需要异步阻塞。❌ 避免异步遍历、需要中断的场景。forEach 对空数组不会执行回调且无法遍历对象需用 Object.keys(obj).forEach()for...of 不能直接遍历普通对象需先转成可迭代对象如 Object.entries(obj)传统 for 循环可遍历类数组如 arguments、DOM 集合forEach 需要先转数组如 Array.from(arguments).forEach()。9.什么是作用域js中有哪些作用域?作用域本质是变量/函数的可访问范围作用域就是变量的 “管辖范围”