小编vad*_*lim的帖子

'x << ~y'在JavaScript中代表什么?

'x << ~y'在JavaScript中代表什么?

我理解按位SHIFT操作执行此操作:

x << y AS x * 2y

而代字号~运算符可以:

~x AS -(x+1)
Run Code Online (Sandbox Code Playgroud)

所以,我假设如下:

5 << ~3 AS 5 * 2-4 or 5 * Math.pow(2, -4)

它应该导致0.3125.

但是,当我运行5 << ~3它时,结果1342177280.

什么是逐步解释?这种操作组合如何以及为什么会导致1342177280而不是0.3125

(这个问题类似于Stack Overflow问题什么是按位运算符?关于按位运算SHIFT符.)

javascript bitwise-operators

55
推荐指数
5
解决办法
3305
查看次数

TS2786“组件”不能用作 JSX 组件

我有一个无法编译的 React Typescript 应用程序。许多组件都有一个 render 方法,其类型为返回React.ReactNodeReact.ReactElement。编译时,会报很多类似如下的错误:

TS2786: 'MessagesWidget' cannot be used as a JSX component.
 Its instance type 'MessagesWidget' is not a valid JSX element.
 The types returned by 'render()' are incompatible between these types.
 Type 'React.ReactNode' is not assignable to type 'import("/home/node/app/node_modules/@types/react-calendar/node_modules/@types/react/index").ReactNode'.
Run Code Online (Sandbox Code Playgroud)

为什么编译器期望ReactNode与捆绑的类型相同react-calendar?我确实已@types/react-dom安装为开发依赖项。

其他可能相关的信息:

  1. 该项目直到几天前才进行编译,当编译开始失败时没有代码更改,因此我怀疑包更新触发了此问题(即使这不是根本原因)。当编译开始失败时,在时间窗口中更新的唯一依赖项是@types/react@types/react-dom。然而,将这些软件包回滚到旧版本并没有解决问题。
  2. 将我的组件渲染方法更改为 returnJSX.Element可以消除编译器错误,但应用程序中存在第三方组件,这是不可能的。

typescript reactjs tsx react-dom

44
推荐指数
5
解决办法
8万
查看次数

jQuery 3 slim ajax基本示例

我是jQuery 3的新手.以下是一个基本的小提琴,使用以前版本的jQuery,但不适用于jQuery 3

$(function() {
    $.ajax({
        url: '/echo/json',
        type: 'GET',
        dataType: 'json',
        success: function(data) {
            console.log(data)
        }
    });
})
Run Code Online (Sandbox Code Playgroud)

在控制台中,我收到此错误:

jquery-3.1.1.slim.min.js:2 jQuery.Deferred异常:$ .ajax不是函数TypeError:$ .ajax不是函数

jquery-3.1.1.slim.min.js:2未捕获的TypeError:$ .ajax不是函数(...)

为什么?

javascript ajax jquery jquery-3

15
推荐指数
1
解决办法
2万
查看次数

Angular2设置视图封装全局

我已经决定将ViewEncapsulationNone为我在我的项目的所有组件.

那么,我如何设置ViewEncapsulation.None全局到整个项目?而不是在我的每个组件装饰器中设置它.

注意:仅供参考,我的deps在RC.6上

编辑:GünterZöchbauer提供的第二个解决方案也适用于2.1.2

angular

14
推荐指数
1
解决办法
3695
查看次数

在智能手机浏览器上检测悬停或鼠标悬停

我的应用程序中有一个按字母顺序排列的滚动条(ASB),大多数智能手机都在他们的Contacts应用程序中.

现在,我的手指在ASB上滚动到特定项目没有问题touchstart touchend click etc...但是,我在智能手机上捕获hovermouseover事件时遇到问题.

我试过touchstart touchswipe touchend mouseenter mousemovehover没有运气.

这是在手机上玩的小提琴Codepen.

任何建议表示赞赏.

html javascript css mobile jquery

12
推荐指数
1
解决办法
1万
查看次数

无法使用 forEach 循环遍历 HTMLCollection

我试图为每个类名为 的元素分配一个单击事件director__card--iconBox。我选择这些元素的方式是通过getElementsByClassName. background-color在编写当前代码后,我正在测试将其父 div应用于红色的函数。最终目标是能够翻转 div 并显示稍后出现的 div 的背面。

const toggleButton = document.getElementsByClassName("director__card--iconBox");

toggleButton.forEach((el) =>
  el.addEventListener("click", (event) => {
    const card = event.target.parentElement.querySelector(".director__card");
    card.classList.toggle("open");
  })
);



Run Code Online (Sandbox Code Playgroud)

我正在取回一个 HTMLCollection。我的想法是,由于 HTMLCollection,这不会起作用?我尝试过 querySelectorAll 返回节点列表,但 NodeList 返回空。

html javascript dom

11
推荐指数
1
解决办法
1万
查看次数

useRouter - 查询对象为空

我正在尝试学习 Next.JS 中的路由,但我无法获取查询对象。

文件路径:./src/pages/[test]/index.tsx

import { useRouter } from 'next/router';

export default function Test() {
  const router = useRouter();
  console.log(router.query);
  return (
    <div>
      <h1>Test</h1>
    </div>
  )
}
Run Code Online (Sandbox Code Playgroud)

console.log只是打印{}

next.js next-router

8
推荐指数
1
解决办法
8868
查看次数

如何检测浏览器是否与ES2015兼容

我有一大堆JS库,我应该重写,因为它已经过时了.所以,我决定提出一个解决方案,我会使用大多数ES2015功能,如休息参数.

问题是,我相信所有的客户都不会让他们的浏览器更新,我很困惑我是否会面临任何关于他们的浏览器兼容我的新JS库的问题.

所以,我想知道我是否可以检测客户端浏览器是否与ES2015兼容.如果没有,我会只包括我的旧JS库.

我正在寻找像条件评论这样的解决方案,但我无处可寻.

任何HTML,JS或PHP的帮助表示赞赏.请建议您的建议.

javascript ecmascript-6

7
推荐指数
1
解决办法
4129
查看次数

模块构建失败:UnhandledSchemeError:插件不处理从“alias:/path”读取(未处理的方案)

我正在创建一个新的 React 应用程序并尝试从头开始配置 webpack 编译器。运行构建命令时会出现此问题webpack -c config/webpack.config.ts- 它给出如下错误;

ERROR in containers:/App
Module build failed: UnhandledSchemeError: Reading from "containers:/App" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "containers:" URIs.
    at /home/myuser/dev/projects/tsxpress-boilerplate/node_modules/webpack/lib/NormalModule.js:659:26
    at Hook.eval [as callAsync] (eval at create (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/tapable/lib/Hook.js:18:14)
    at Object.processResource (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/webpack/lib/NormalModule.js:656:9)
    at processResource (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/loader-runner/lib/LoaderRunner.js:220:11)
    at iteratePitchingLoaders (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/loader-runner/lib/LoaderRunner.js:171:10)
    at runLoaders (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/loader-runner/lib/LoaderRunner.js:397:2)
    at NormalModule.doBuild (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/webpack/lib/NormalModule.js:646:3)
    at NormalModule.build (/home/myuser/dev/projects/tsxpress-boilerplate/node_modules/webpack/lib/NormalModule.js:791:15)
    at …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs webpack webpack-5

6
推荐指数
2
解决办法
2万
查看次数

如何将新的stateObject添加或追加到历史记录中

我有以下代码来保存我data当前的页面状态.

window.history.pushState({myData: data}, "RandomTitle", '#');
Run Code Online (Sandbox Code Playgroud)

但现在,我想保存另一个值scrollTop.如果我这样做

window.history.pushState({scrollTop: scrollTop}, "RandomTitle", '#');
Run Code Online (Sandbox Code Playgroud)

上面的代码将用新的代码替换历史状态,并且myData将消失.

现在的问题是有反正我可以补充scrollTop,同时有myData在我的历史状态?或者我只需要将它设置为最初,

window.history.pushState({myData: data, scrollTop: 0}, "RandomTitle", '#');
// To change the scrollTop in history state
window.history.state.scrollTop = $(window).scrollTop();
Run Code Online (Sandbox Code Playgroud)

我在想是否有类似的功能window.history.state.addObject.

javascript

5
推荐指数
1
解决办法
489
查看次数